我有这样一个 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/