XSLT横向移动

时间:2012-05-25 13:21:38

标签: xslt

我不知道如何处理这个问题,因为我对XSLT很陌生。

我正在使用xsl:for-each循环遍历Types,这很好,但是当我在该循环中(类型)时,如何使用该属性选择Rate TypeCode?我是否正确地认为选择仅具有我当时所处的每个人的范围?也可能有很多包包。

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

1 个答案:

答案 0 :(得分:1)

  

我是否认为选择只有for-each的范围   那个时候我在吗?

不是,XPath表达式可以是 relative ,在这种情况下,它是从当前节点评估的,或绝对(从/)在这种情况下,它将从当前文档节点进行评估。

即使使用相对XPath表达式,也可以选择以当前节点为根的子树外部的节点 - 只需使用反向轴或following::following-sibling::轴。

使用

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

这假设行李不能嵌套,否则需要使用稍微不同的表达式:

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