2010-05-07 9 views
0

Je transforme un document XML mais après la transformation, ma DTD disparaît et la première ligne qui indique la version XML est manquante.Conserver la DTD après la transformation XML

<?xml version="1.0"?> 

Le code que je utilise pour transformer le fichier XML est:

// Load the style sheet. 
      var xslt = new XslCompiledTransform(); 
      xslt.Load("XSLTFile1.xslt"); 

      // Create the writer. 
      var settings = new XmlWriterSettings 
          { 
           Indent = true, 
           IndentChars = "\t", 
           ConformanceLevel = ConformanceLevel.Auto, 
           Encoding = Encoding.UTF8, 
          }; 

      var mydoc = XDocument.Load("Doc1.xml"); 

      var writer = XmlWriter.Create("Doc2.xml", settings); 

      // Execute the transform and output the results to a file. 
      if (writer != null) 
      { 
       xslt.Transform(mydoc.CreateReader(), writer); 
       writer.Close(); 
      } 

Toutes les idées?

Répondre

0

Afin de conserver la déclaration XML, vous devez vous assurer dans votre XmlWriterSettings que OmitXmlDeclaration est réglé sur false:

var settings = new XmlWriterSettings 
        { 
        Indent = true, 
        IndentChars = "\t", 
        ConformanceLevel = ConformanceLevel.Auto, 
        Encoding = Encoding.UTF8, 
        OmitXmlDeclaration = false, 
        }; 

Quant à la DTD « aller loin » - puisque vous transformez le document, vous devez ajouter une nouvelle déclaration DTD au document transformé. Sans les fichiers xsl et xml, il est difficile de dire avec certitude. Pouvez-vous éditer votre question et les ajouter?

0

hey merci pour la réponse. J'ai fait

writer.WriteDocType(mydoc.DocumentType.Name, mydoc.DocumentType.PublicId, mydoc.DocumentType.SystemId, mydoc.DocumentType.InternalSubset); 

Et cela a fonctionné. Oui, j'ai aussi

OmitXmlDeclaration = false, 

Merci

Questions connexes