2015-10-27 36 views
1

我有以下XML的XPath從一個表哥節點

<FreightLabelData> 
    <Consignments> 
    <Consignment> 
     <References> 
     <Reference> 
      <ReferenceNumber>RefLine1</ReferenceNumber> 
      <SequenceNumber>1</SequenceNumber> 
     </Reference> 
     <Reference> 
      <ReferenceNumber>RefLine2</ReferenceNumber> 
      <SequenceNumber>2</SequenceNumber> 
     </Reference> 
     </References> 
     <FreightLabels> 
     <FreightLabel> 
      <ReferenceSequenceNumber>1</ReferenceSequenceNumber> 
     </FreightLabel> 
     <FreightLabel> 
      <ReferenceSequenceNumber>2</ReferenceSequenceNumber> 
     </FreightLabel> 
     </FreightLabels> 
    </Consignment> 
    </Consignments> 
</FreightLabelData> 

我的XSLT沒有一個for循環,開始爲

<xsl:for-each select="/FreightLabelData/Consignments/Consignment/FreightLabels/*"> 

對於每個FreightLabel選擇一個值,我需要找到相關的表妹參考文獻/ ReferenceNumber其中FreightLabel/ReferenceSequenceNumber =參考/序列號

我花了相當多的時間尋找答案,沒有任何運氣。有誰知道如何做到這一點?

感謝

+0

http://stackoverflow.com/help/someone-answers –

回答

1

在XSLT,你可以使用:

/FreightLabelData/Consignments/Consignment/References/Reference[SequenceNumber=current()/ReferenceSequenceNumber] 

然而,這將是更好地使用XSLT的處理交叉引用的專用機制。通過在你的樣式表的頂層定義一鍵啓動:

<xsl:key name="ref" match="Reference" use="SequenceNumber" /> 

然後,從FreightLabel的背景下,您可以選擇使用相應Reference下面的表達式:

key('ref', ReferenceSequenceNumber) 

參見:http://www.w3.org/TR/xslt/#key