[xsl] processing nodes by value precedence

Subject: [xsl] processing nodes by value precedence
From: "Matthew Stoeffler matthew.stoeffler@xxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Tue, 2 Feb 2016 20:57:46 -0000
Lets say Ibm processing products that can have multiple types of a certain
node distinguished by value, of which I want only one in my result, and I have
a precedence order by type of those nodes that shoudl determine which one I
get.  So, if the child of product Ibm interested in is price currency and my
product had

<product>
b&.

<price>
<amount>25.00</amount>
<currency>FR</currency>
</price>

<price>
<amount>20.00</amount>
<currency>US</currency>
</price>

<price>
<amount>30.00</amount>
<currency>CA</currency>
</price>

</product>

And my preference is to take the only one price in the order 1., US, 2. CA,
3.FR.

In context product, if I say

<xsl:apply-templates
select=b(price[currency=bUSb],price[currency=bCAb],price[currency=b
FRb])[1]b/>

I get the FR price because itbs first in doc order, but my expression was
meant to say process nodes in this sequence order, taking the first one, in
the sequence, not in the doc order of the input tree.

I thought the above instruction would be a short cut to achieving this, but it
doesnbt work. Is there a concise way to express  the kind of precedence I
want?

Thanks.

Current Thread