xml - 在 XSLT 中获取父元素

标签 xml xslt xpath

我有这样一个 XML:

<PurchaseOrder>
    <ID>1</ID>
    <PurchaseOrderLine>
        <DATA>100<DATA>
    </PurchaseOrderLine>
    <PurchaseOrderLine>
        <DATA>200<DATA>
    </PurchaseOrderLine>
    <PurchaseOrderLine>
        <DATA>300<DATA>
    </PurchaseOrderLine>
</PurchaseOrder>
<PurchaseOrder>
    <ID>2</ID>
    <PurchaseOrderLine>
        <DATA>100<DATA>
    </PurchaseOrderLine>
    <PurchaseOrderLine>
        <DATA>200<DATA>
    </PurchaseOrderLine>
    <PurchaseOrderLine>
        <DATA>300<DATA>
    </PurchaseOrderLine>
</PurchaseOrder>
<PurchaseOrder>
    <ID>3</ID>
    <PurchaseOrderLine>
        <DATA>100<DATA>
    </PurchaseOrderLine>
    <PurchaseOrderLine>
        <DATA>200<DATA>
    </PurchaseOrderLine>
    <PurchaseOrderLine>
        <DATA>300<DATA>
    </PurchaseOrderLine>
</PurchaseOrder>

和 XSL:

<xsl:template match="PurchaseOrder">
    <xsl:apply-templates select="PurchaseOrderLine"/>
</xsl:template>

<xsl:template match="PurchaseOrderLine">
    <!-- I want to get the PurchaseOrder\ID here for the current PurchaseOrder -->
</xsl:template>

如何在 PurchaseOrderLine 中获取当前父元素值 (PurchaseOrder\ID)?

最佳答案

如果您希望您的模板是原子的(隔离和可重用),您应该以这种方式引用父节点。相反,在调用模板时,传入您希望能够使用的引用。这样您就可以将此模板用于相同类型的节点,即使它具有不同的上下文/父节点(只要您仍然可以加载参数)。

<xsl:template match="PurchaseOrder">
    <xsl:apply-templates select="PurchaseOrderLine">
        <xsl:with-param name="PurchaseOrder" select="."/>
    </xsl:apply-templates>
</xsl:template>

<xsl:template match="PurchaseOrderLine">
    <xsl:param name="PurchaseOrder"/>
    <!-- I want to get the PurchaseOrder\ID here for the current PurchaseOrder -->
</xsl:template>

现在在您的 PurchaseOrderLine 模板中,您可以引用 $PurchaseOrder 变量。

关于xml - 在 XSLT 中获取父元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12685970/

相关文章:

javascript - 使用 JQUERY 解析 XML - 排序到两个数组中

java - 如何在java selenium中通过xpath识别文本为Sign in with Google的元素

php - 包装一组 XML 节点

c# - 通过C#将XPath作为参数传递给XSLT,

javascript - 在浏览器上本地化日期?

xml - 计算 XPath 1.0 中的不同内容

java - 关于使用 Java 的 XPath

java - 使用正则表达式将相似的 xml 标签合并为单个标签

android - android :rotationX and android:rotationY in XML actually work?怎么办

java - gwt 返回 polymer 元素的错误 xml 标记属性,并且没有为 paper-icon-button 显示图标