<xsl:variable name="ShipToParent" select ="/Item[1]/ShipToLocation | PurchaseOrder/ShipToLocation" />
在上面我想选择第一项shiptolocation即使两个节点都存在。目前,它在两者都存在时选择purchaseorder节点。我相信因为它在文件中顺序出现在另一个节点之前。
有没有办法在&#39;或&#39;上指定偏好?两者都存在的条件?
提前致谢, - 史蒂夫
答案 0 :(得分:0)
如果PurchaseOrder
始终位于ShipToLocation
下Item
之后,您可以执行此操作以获取文档顺序中最后一个的联合中的节点:
<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]
条件是不必要的。