1

次のような XML 構造を持つ:

<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>

各 Shipment ノードに一致するテンプレートから、現在の ShippingMethodId を使用して LineItems をループしたいと考えています。そのようです:

<xsl:template match="Shipment">
    <xsl:for-each select="//LineItems/LineItem[ShippingMethodId=./ShippingMethodId]">
      <xsl:call-template name="LineItem">
      </xsl:call-template>
    </xsl:for-each>
</xsl:Template>

しかし、これにより、各出荷の下にすべての LineItems が表示されます。特定の LineItem ノードのテンプレートを呼び出す正しい方法は何ですか?

4

1 に答える 1