XSLT - 如何使用'或'选择首选节点条件

时间:2015-07-20 12:20:35

标签: xml xslt

<xsl:variable name="ShipToParent" select ="/Item[1]/ShipToLocation | PurchaseOrder/ShipToLocation" />

在上面我想选择第一项shiptolocation即使两个节点都存在。目前,它在两者都存在时选择purchaseorder节点。我相信因为它在文件中顺序出现在另一个节点之前。

有没有办法在&#39;或&#39;上指定偏好?两者都存在的条件?

提前致谢, - 史蒂夫

1 个答案:

答案 0 :(得分:0)

如果PurchaseOrder始终位于ShipToLocationItem之后,您可以执行此操作以获取文档顺序中最后一个的联合中的节点:

<xsl:variable name="ShipToParent" select ="(/Item[1]/ShipToLocation | PurchaseOrder/ShipToLocation)[last()]" />

如果改变了XML文档中的顺序,这将不起作用。

或者,您可以将PurchaseOrder的选择放在单独的变量中,并执行以下操作:

<xsl:variable name="PurchaseOrder" select="PurchaseOrder/ShipToLocation" />
<xsl:variable name="ShipToParent" select ="/Item[1]/ShipToLocation[not($PurchaseOrder)] | $PurchaseOrder" />

请注意,在展示开始时/Item处,这意味着Item是根元素,因此只有一个这样的元素。如果是这种情况,则[1]条件是不必要的。