2012-01-03 33 views
0

我已經生成一個HTML文件和頂部的html聲明如下所示:XML和xmln聲明HTML文件不能轉化

<html xml:lang="de-CH" lang="de-CH" xmlns="http://www.w3.org/1999/xhtml"> 

然後我嘗試將其轉換成與此不同的格式。 Net 4代碼:

XmlReaderSettings settings = new XmlReaderSettings(); 
settings.DtdProcessing = DtdProcessing.Ignore; 

XslCompiledTransform proc = new XslCompiledTransform(); 

proc.Load("Html_to_Sql.xslt"); 

fsHtmlXml = new FileStream(file.Name, FileMode.Create); 

html = XmlReader.Create(file.FullName, settings); 
proc.Transform(html, null, fsHtmlXml); 

不幸的是,只要我在HTML中具有xml,lang和xmlns屬性,就沒有任何反應。 這是爲什麼?

+1

你應該張貼您的XSLT;這個問題最可能在那裏。 – Jacob 2012-01-03 22:06:51

回答

1

將通過XML和XPath這項工作

using System; 
using System.IO; 
using System.Xml; 
using System.Xml.Xsl; 
using System.Xml.XPath; 

public class TransformXML 
{ 
    //This will transform xml document using xslt and produce result xml document 
    //and display it 

    public static void Main(string[] args) 
    { 
     try 
     { 
      XPathDocument myXPathDocument = new XPathDocument(sourceDoc); 
      XslTransform myXslTransform = new XslTransform(); 
      XmlTextWriter writer = new XmlTextWriter(resultDoc, null); 
      myXslTransform.Load(xsltDoc); 
      myXslTransform.Transform(myXPathDocument, null, writer); 
      writer.Close(); 
      StreamReader stream = new StreamReader (resultDoc); 
      Console.Write("**This is result document**\n\n"); 
      Console.Write(stream.ReadToEnd()); 
     } 
     catch (Exception e) 
     { 
      Console.WriteLine ("Exception: {0}", e.ToString()); 
     } 
    } 
} 
2

您的XSLT將需要引用http://www.w3.org/1999/xhtml命名空間中的元素。您尚未發佈XSLT代碼,問題很可能在於該文件。

1

xmlns屬性指定XML文檔的名稱空間。這與C#中的名稱空間非常相似,其中兩個具有相同名稱但名稱空間不同的類被認爲是完全不同的類。更改XML名稱空間意味着您的XSLT模板/ XPath不匹配。