c# - 无法通过 .NET System.Xml.Xsl.XslCompiledTransform 将 XML 转换为 HTML

标签 c# .net xml xslt

我有这个 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 就可以了。

现在,我有这段代码:

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

问题是什么?

最佳答案

马丁的回答:

删除默认命名空间,xmlns="http://AAA" , 来自 xsl:stylesheet因为 HTML 元素不属于该 namespace 。例如,<head>实际上是 <cf:head>默认情况下。

关于c# - 无法通过 .NET System.Xml.Xsl.XslCompiledTransform 将 XML 转换为 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6556420/

相关文章:

c# - 当它只有属性时如何在 scrapysharp 中找到表单,即没有名称或 ID

c# - 两个 LINQ 语句对应一个可等待的 LINQ 数据库查询(优化)

c# - .net 的 Windows.Forms.DataVisualization.Charting 程序集是否有替代方案?

c# - 使用命名空间会影响性能或编译时间吗?

xml - xsl :strip-space is not removing the carriage return

c# - UWP XAML - 将 GridView 的大小调整为 ListViewItem 父级的完整宽度

.net - MS Access 数据库

PHP - SimpleXML 故障排除中子节点中的命名空间转换

python - 难以从 smarkets 解析 .xml 文件

c# - 如何使用 API 获取 Google Picasa 帐户的剩余存储空间?