.NET System.Xml.Xsl.XslCompiledTransformを通じてXMLをHTMLに変換することができません:は、私がこのXSLを持って
<?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は動作します。
Error: Data at the root level is invalid. Line 1, position 1. - Type: System.Xml.XmlException
問題はどのようなものです:それは例外を取得もちろん
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;
}
:
は今、私はこのコードを持っていますか?
'<?xml-stylesheet ...'行を削除すると動作しますか? –
どのステートメントから例外が発生しますか? –
いくつかのコメント:スタイルシートにHTML出力を作成させたい場合は、method = "xml"の代わりに ' 'を使うのが正しいアプローチです。 HTML要素を作成する場合は、HTML要素がその名前空間に属さないため、 'xsl:stylesheet'から' xmlns = "http:// AAA"を削除します。それはどれもエラーを説明するものではありませんが、XSLTが原因ではないと思われます。入力マークアップがXMLとして解析されたときのことです。スタックトレースを投稿できますか? 'xml'変数にはどのような場所がありますか? –