在XSLT中,我可以使用当前节点属性作为动态值来应用模板

时间:2013-01-06 04:20:49

标签: xml xslt xpath

我正在尝试使用当前节点属性作为值来匹配我的xml中的名称。 xml节点与句柄名称相同。有多个节点具有与句柄对应的不同名称。

由于它涉及许多不同名称的不同节点,我不想写一个大量的选择语句。请查看apply-template内的xpath - 它不起作用,但有没有办法做这样的事情?

<xsl:for-each select="data/navigation/page">
    <xsl:element name="{@handle}">
        <xsl:attribute name="id"><xsl:value-of select="current()/@id"/></xsl:attribute>
        <xsl:value-of select="name"/>
        <xsl:apply-templates select="/data/[current()/@handle]" mode="page"/>
    </xsl:element>
</xsl:for-each>

1 个答案:

答案 0 :(得分:3)

<xsl:apply-templates select="/data/[current()/@handle]" mode="page"/>

这在语法上是非法的 - 位置步骤不能以谓词开头。

可能你想要这样的东西:

<xsl:apply-templates select="/data/*[name()=current()/@handle]" mode="page"/>