1

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

由于它遍历了许多具有不同名称的不同节点,我不想写大量的选择语句。请看里面的 xpath apply-template- 它不工作,但有没有办法做这样的事情?

<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>
4

1 回答 1

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

这在语法上是非法的——定位步骤不能以谓词开头

可能你想要这样的东西:

<xsl:apply-templates select="/data/*[name()=current()/@handle]" mode="page"/>
于 2013-01-06T04:52:19.817 回答