当name是属性值模板时,将哪个名称空间用于xsl:element

时间:2013-09-04 00:02:03

标签: xslt xslt-1.0

我正在尝试理解xsl:element如何正常工作,我有这个测试转换:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet
    version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns="http://www.w3.org/1999/xhtml">

    <xsl:template match="test">
        <output>
            <test1/>
            <xsl:element name="test2"/>
            <xsl:variable name="three" select="3"/>
            <xsl:element name="test{$three}"/>
        </output>
    </xsl:template>
</xsl:stylesheet>

应用于此文档时:

<?xml version="1.0" encoding="UTF-8"?>
<test/>

我使用xsltproc

获得此结果
<?xml version="1.0"?>
<output xmlns="http://www.w3.org/1999/xhtml">
    <test1/>
    <test2/>
    <test3 xmlns=""/>
</output>

为什么test3节点与test1和test2不在同一名称空间?

1 个答案:

答案 0 :(得分:0)

使用Visual Studio并将其应用于XSLT我得到以下内容(格式化为可读性),所以我想说它是xsltproc中的一个错误。

<?xml version="1.0" encoding="utf-8"?>
<output xmlns="http://www.w3.org/1999/xhtml">
  <test1 />
  <test2 />
  <test3 />
</output>