I am not sure how to go about this problem as I am pretty new to XSLT.
I am using an xsl:for-each to loop through the Types, which is fine but when I am in that loop(Type) how would I select the Rate using the attribute in the TypeCode? Am I right in thinking the select only has the scope of the for-each that I am in at that time? There could be many bag elements as well.
<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>
Not really, an XPath expression can be relative, in which case it is evaluated off the current node, or absolute (starting with
/) in which case it is evaluated off the current document node.Even with a relative XPath expression it is possible to select nodes outside of the subtree rooted by the current node — simply by using reverse axes or the
following::orfollowing-sibling::axis.Use:
This assumes that bags cannot be nested, otherwise a slightly different expression needs to be used: