我有這樣的xsl:無法通過.NET System.Xml.Xsl.XslCompiledTransform將XML轉換爲HTML
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:cf="http://AAA"
xmlns="http://AAA"
exclude-result-prefixes="cf">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/cf:Content">
<html>
<head>
<title>AAA</title>
</head>
<body>
Hello everybody
</body>
</html>
</xsl:template>
</xsl:stylesheet>
此xml:
<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet href="myxsl.xslt" type="text/xsl"?>
<cf:Content xmlns:cf="http://AAA"
xmlns="http://AAA">
Hello.
</cf:Content>
通過XML引用的命名空間的XSD我的(驗證是正確的)。
嗯,是我打開XML文件瀏覽器中,XSLT作品。
現在,我有這樣的代碼:
string xml = "THE SAME XML OF THE XML FILE";
XslCompiledTransform transform = new XslCompiledTransform();
using (XmlReader xr =
XmlReader.Create("myxsl.xslt")) {
transform.Load(xr);
}
try {
using (StringWriter sw = new StringWriter())
using (StringReader sr = new StringReader(xml))
using (XmlReader xr = XmlReader.Create(sr)) {
transform.Transform(xr, new XsltArgumentList(), sw);
string html = sw.ToString();
this.Preview_Literal.Text = html;
}
} catch (Exception ex) {
throw ex;
}
當然它會得到一個異常:
Error: Data at the root level is invalid. Line 1, position 1. - Type: System.Xml.XmlException
問題是什麼?
請問如果刪除了'<?xml樣式表...'行工作? –
哪個陳述確實給你例外? –
一些評論:如果你想讓你的樣式表創建HTML輸出,那麼使用' '而不是method =「xml」是正確的方法。如果你想創建HTML元素然後刪除'的xmlns =「HTTP:// AAA」'從'的xsl:stylesheet'爲HTML元素沒有在該命名空間的歸屬。這些都不能解釋你得到的錯誤,但我懷疑這不是由XSLT引起的,而是當輸入標記被解析爲XML時發生。你可以發佈堆棧跟蹤嗎? 「xml」變量在哪裏/如何填充? –