【问题标题】:Create a <xls:text></xsl:text> element programatically以编程方式创建 <xsl:text></xsl:text> 元素
【发布时间】:2016-01-25 13:41:19
【问题描述】:

当我想在 C# 中创建一个带有 xsl:name 前缀的元素时,它会创建一个没有 xsl 前缀的元素。如何创建具有特定前缀的元素? 我从 xml 文件中删除了&lt;xslt:stylesheet&gt; 标头,但是当我打开 xml 文件时,Load 方法抛出了有关 xsl 前缀的异常。

?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" omit-xml-declaration="yes" indent="no"/>
<table border="1">
    <thead>
        <tr>
            <!--<th>
                <span>
                    <xsl:text>HeaderSample</xsl:text>
                </span>
            </th>-->
        </tr>
    </thead>
    <tbody>
        <xsl:for-each select="result1">
            <xsl:for-each select="row">
                <tr>
                    <td>
                        <xsl:for-each select="HeaderSample">
                            <xsl:apply-templates/>
                        </xsl:for-each>
                    </td>                   
                </tr>
            </xsl:for-each>
        </xsl:for-each>
    </tbody>
</table>        
</xsl:stylesheet>
XmlDocument doc = new XmlDocument();
doc.Load("Template\\ResultItem.xml");

XmlNode headerElement = doc.LastChild.SelectSingleNode("table/thead/tr");

foreach (string h in Headers)
{
    XmlElement thElement = doc.CreateElement("th");
    XmlElement spanElement = doc.CreateElement("span");
    XmlElement xslTextElement = doc.CreateElement("xsl:text");

    xslTextElement.InnerText = h;

    spanElement.AppendChild(xslTextElement);
    thElement.AppendChild(spanElement);
    headerElement.AppendChild(thElement);
}                               

在输出中没有&lt;xsl:text&gt;...&lt;/xsl:text&gt;,但有&lt;text&gt;...&lt;/text&gt;

【问题讨论】:

标签: c# xml xmldocument


【解决方案1】:

如果要在 XML 输出中添加前缀,则需要在创建节点时添加元素的命名空间。

替换这一行:

XmlElement xslTextElement = doc.CreateElement("xsl:text");

作者:

 XmlElement xslTextElement = doc.CreateElement("xsl:text", "http://www.w3.org/1999/XSL/Transform");

【讨论】:

  • 它可以工作,但是所有类型的这些元素都必须在其属性中具有命名空间。我想我必须使用这个建议。谢谢! @Ermiar
猜你喜欢
  • 2012-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-08
  • 1970-01-01
  • 2011-07-05
  • 2015-12-28
相关资源
最近更新 更多