3

私は XSLT にかなり慣れていないので、この問題に対処する方法がわかりません。

を使用してxsl:for-eachをループしますが、これは問題ありませんが、そのループ (タイプ) にいるとき、 の属性を使用して をTypesどのように選択しますか? 選択には、その時点で私がいる for-each の範囲しかないと考えていますか? バッグの要素もたくさんあります。RateTypeCode

<Bags>
<Bag>
    <Types>
        <Type TypeCode="DBL">
            <Description Name="BLAH">
                <Text>BLAH</Text>
                <Image/>
            </Description>
        </Type>
        <Type TypeCode="JRS">
            <Description Name="BLAH">
                <Text>BLAH BLAH</Text>
                <Image/>
            </Description>
        </Type>
    </Types>
    <Plans>
        <Plan PlanCode="DISC" PlanName="Best rate">
            <Description Name="Best rate">
                <Text>Best available rate</Text>
            </Description>
        </Plan>
        <Plan PlanCode="NOCC" PlanName="No CC Required">
            <Description Name="No CC Required">
                <Text>Rate- No CC Required</Text>
            </Description>
        </Plan>
    </Plans>
    <Rates>
        <Rate TypeCode="DBL" PlanCode="DISC">
            <Rates>
                <Rate>
                    <Base AmountBeforeTax="0" CurrencyCode="EUR"/>
                </Rate>
            </Rates>
        </Rate>
        <Rate TypeCode="JRS" PlanCode="DISC">
            <Rates>
                <Rate>
                    <Base AmountBeforeTax="0" CurrencyCode="EUR"/>
                </Rate>
            </Rates>
        </Rate>
    </Rates>
</Bag>
    </Bags>
4

1 に答える 1

1

選択には、その時点で私がいる for-each の範囲しかないと考えていますか?

そうではありません。XPath 式は、現在のノードから評価される相対式、または現在のドキュメント ノードから評価される絶対式( で始まる) にすることができます。/

相対 XPath 式を使用しても、現在のノードをルートとするサブツリーの外側にあるノードを選択することができます。逆の軸またはfollowing::またはfollowing-sibling:: 軸を使用するだけです。

使用:

ancestor::Bag/Rates/Rate[@TypeCode = current()/@TypeCode]

これは、バッグをネストできないことを前提としています。それ以外の場合は、わずかに異なる式を使用する必要があります。

ancestor::Bag[1]/Rates/Rate[@TypeCode = current()/@TypeCode]
于 2012-05-25T13:33:01.530 に答える