XSLT横向转换

XSLT横向转换,xslt,Xslt,我不知道如何解决这个问题,因为我对XSLT还很陌生 我正在使用xsl:for each在类型中循环,这很好,但是当我在该循环(类型)中时,如何使用TypeCode中的属性选择Rate?我是否认为select只对我当时所处的每个项目具有范围?也可能有很多包元素 <Bags> <Bag> <Types> <Type TypeCode="DBL"> <Description Name="BLAH"&g

我不知道如何解决这个问题,因为我对XSLT还很陌生

我正在使用
xsl:for each
类型中循环,这很好,但是当我在该循环(类型)中时,如何使用
TypeCode
中的属性选择
Rate
?我是否认为select只对我当时所处的每个项目具有范围?也可能有很多包元素

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

废话
废话
最佳可用率
费率-无需CC
我认为select只包含for each的范围,对吗 我当时在吗

不是真正的,XPath表达式可以是相对的,在这种情况下,它是在当前节点之外计算的;或者是绝对的(从
/
开始),在这种情况下,它是在当前文档节点之外计算的

即使使用相对XPath表达式,也可以选择当前节点所在子树之外的节点——只需使用反向轴或
后续::
后续同级::
轴即可

使用

ancestor::Bag/Rates/Rate[@TypeCode = current()/@TypeCode]
这假设行李不能嵌套,否则需要使用稍微不同的表达式:

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

为快速反应干杯,appreciated@DazzlaJ当前位置我很高兴这个答案对你有用。请您接受它(通过在答案旁边的复选标记上单击“开”)好吗?我只想说,随着时间的推移,我注意到Dimitre确实“得到”了这个XSLT内容:),并提供了很好的答案。检查他的答案列表!对不起,迪米特里,我只是习惯了堆叠溢出。再次感谢你的帮助。@DazzlaJ:没问题,你很好。:)