xslt loop属性因命名空间属性而失败

时间:2018-06-08 16:21:20

标签: loops xslt namespaces attributes

我将属性转换为表格, 但我不知道将设置哪些属性, 所以我得到了以下解决方案:

                <simpletable  spectitle="Chapter Attribute">
                    <sthead>
                        <stentry>Name</stentry>
                        <stentry>Wert</stentry>
                    </sthead>
                    <xsl:apply-templates select="@*"/>
                    <xsl:apply-templates select="Head/@*"/>
                </simpletable>

<!-- ********************* Chapter Attribute -> simpleTable....strow ************************************************************************************** -->
<xsl:template match="Chapter/@*|Head/@*">
    <xsl:choose>
        <xsl:when test="string(.)">
            <strow>
                <stentry>
                    <xsl:value-of select="local-name(.)"/>
                </stentry>
                <stentry>
                    <xsl:value-of select="."/>
                </stentry>
            </strow>
        </xsl:when>
    </xsl:choose>
</xsl:template>

这是我要处理的XML:

<Chapter title="Information" termpool="" nodeid="DE-123" xmltag="Chapter" 
 status="" id="" language="" version="">
<Head UniqueID="DE-234" xmlns:axf="http://www.antennahouse.com/names
         /XSL/Extensions">Information</Head>

这是结果

<strow>
    <stentry>title</stentry>
    <stentry>Information</stentry>
</strow>
<strow>
    <stentry>nodeid</stentry>
    <stentry>DE-123</stentry>
</strow>
<strow>
    <stentry>xmltag</stentry>
    <stentry>Chapter</stentry>
</strow>
<strow>
    <stentry>UniqueID</stentry>
    <stentry>DE-234</stentry>
</strow>

对于&lt;&lt;章&gt;&gt;它工作正常,但对于&lt;&lt;头&gt;&gt;它不识别xmlns:axf (或xmlns:axf设置了一个vaule)

希望有人给我一个提示,如何使用@ *访问xmlns:axf 谢谢Jochen

1 个答案:

答案 0 :(得分:1)

在XPath使用的XDM数据模型中,名称空间和属性是完全不同的东西。属性轴@*为您提供了名称空间轴namespace::*的名称空间的属性。

请注意,这将为您提供元素范围内的所有命名空间,而不仅仅是那些在该元素上声明的命名空间。如果你真的想要一个元素上存在但在父元素上不存在的命名空间,那么逻辑将取决于你使用的XSLT版本,你没有告诉我们。