我不知道如何处理这个问题,因为我对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>
答案 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]