XSL

2012-05-09 8 views
1

XSL

<ContextDoc> 
    <PurchaseOrder xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <OrderForms> 
     <OrderForm> 
     <Shipments> 
      <Shipment> 
      ... 
      <ShippingMethodId>17995798-a2cc-43ad-81e8-bb932f6827e4</ShippingMethodId> 
      ... 
      </Shipment> 
      <Shipment> 
      ... 
      <ShippingMethodId>11223344-a2cc-11bc-25a7-aa345f6827e6</ShippingMethodId> 
      ... 
      </Shipment> 
     </Shipments> 
     <LineItems> 
      <LineItem> 
      ... 
      <ShippingMethodId>17995798-a2cc-43ad-81e8-bb932f6827e4</ShippingMethodId> 
      ... 
      </LineItem> 
      <LineItem> 
      ... 
      <ShippingMethodId>17995798-a2cc-43ad-81e8-bb932f6827e4</ShippingMethodId> 
      ... 
      </LineItem> 
      <LineItem> 
      ... 
      <ShippingMethodId>11223344-a2cc-11bc-25a7-aa345f6827e6</ShippingMethodId> 
      ... 
      </LineItem> 
     </LineItems> 
     </OrderForm> 
    </OrderForms> 
    </PurchaseOrder> 
</ContextDoc> 

私は現在ShippingMethodIdとループのLineItemsをしたい各出荷ノードテンプレートマッチングから。そうですね:

しかし、それは私にすべてのLineItemsを各出荷の下で提供します。特定のLineItemノードのテンプレートを呼び出す正しい方法は何ですか?

答えて

1

current()を使用すると、ループ外のコンテキストを指すことができます。ループ内の.は、loppの現在の要素のコンテキストを指しています。このように:あなたは「マッチング」とし、機能などのテンプレートを呼び出すことなく、必要なすべてを行うことができますように

<xsl:for-each select="//LineItems/LineItem[ShippingMethodId=current()/ShippingMethodId]"> 

も、それは感じています。あなたが達成しようとしていることについてもう少し考えを与えてください。私たちはあなたがそこに着くためにもっと理想的な方法をお勧めします。たとえば、ShippingMethodIdでグループ化する必要がある場合は、Muenchian methodを使用できます。