2010-05-07 94 views
0

我正在轉換一個XML文檔,但在轉換後,我的DTD消失了,並且第一行告訴XML版本丟失。XML轉換後保留DTD

<?xml version="1.0"?> 

我使用轉換XML文件中的代碼是:

// 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(); 
      } 

任何想法?

回答

0

爲了保持XML聲明,你需要確保你的XmlWriterSettingsOmitXmlDeclaration設置爲false

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

至於DTD「徑自走開」 - 因爲你正在改變的文件,您應該向轉換後的文檔添加一個新的DTD聲明。

沒有xslxml文件,很難確定。你能編輯你的問題並添加它們嗎?

0

嘿謝謝你的回覆。我做了

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

它工作。是的,我也有

OmitXmlDeclaration = false, 

感謝