转换.net XSLTransform时无效的QName

时间:2008-11-14 19:10:07

标签: .net xml xslt

我有一段XML结构类似于:

 <root>
      <score name="Exam 1"><value>76</value></score>
      <score name="Exam 2"><value>87</value</score>
 </root>

我想把它变成这样:

<root>
     <Exam 1>76</Exam 1>
     <Exam 2>87</Exam 2>
</root>

关注this article我正在使用此样式表:

    <stylesheet>
        <xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
            <xsl:template match='@*|node()'>
                <xsl:copy>
                    <xsl:apply-templates select='@*|node()'/>
                </xsl:copy>
            </xsl:template>
            <xsl:template match='score'>
                <xsl:element name='{@name}'>
                    <xsl:apply-templates/>
                </xsl:element>
            </xsl:template>
        </xsl:stylesheet>
    </stylesheet>

但是,当我将其转换并将其加载到文档中时,我收到此错误:

  

System.Xml.Xslt.XsltException:'考试1'是无效的QName

似乎很多谷歌搜索结果都显示有这个错误的人以某种方式传递了一个空字符串,错误是“”是一个无效的QName,但这不是这里的情况。

有什么问题?有没有更好的替代解决方案?

1 个答案:

答案 0 :(得分:1)

元素名称中不能有空格。