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

标签 xml xslt xpath

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

由于它遍历具有不同名称的许多不同节点,因此我不想编写大量的select语句。请查看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>

最佳答案

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



从语法上讲这是非法的-定位步骤不能以谓词开头。

可能您想要这样的东西:

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

关于xml - 在XSLT中,我可以使用当前节点属性作为动态值来应用模板吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14179252/

相关文章:

xml - perl解析xml文件后,得到特殊字符

xml - 保留 XSL 样式表中的空格

XML - XSLT - 使用外部 xml 文档中的属性

xml - 如何在xsl模板规则中仅匹配当前节点?

xml - XSL if else 条件

selenium - 如何使用 Selenium 检查复选框样式的输入范围是否已选中? Only::after 作为状态之间的区别

javascript - 为什么 xpath 选择空格?

java - tagoup 破坏了良好的 xml

c# - 将多个行值从数据库传递到 XML

javascript - 使用 javascript ActiveXObject 在 XML 中添加新节点给出错误