Re: [xsl] processing nodes by value precedence

Subject: Re: [xsl] processing nodes by value precedence
From: "David Carlisle d.p.carlisle@xxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Tue, 2 Feb 2016 21:08:48 -0000
On 2 February 2016 at 20:57, Matthew Stoeffler matthew.stoeffler@xxxxxxxxxx
<xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote:

> 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.
>
> No you should get the US one. if you execute

<xsl:stylesheet version="2.0" xmlns:xsl="
http://www.w3.org/1999/XSL/Transform";>

 <xsl:template match="product">
  <xsl:copy-of
select="(price[currency='US'],price[currency='CA'],price[currency='FR'])[1]"/
>
 </xsl:template>
</xsl:stylesheet>


on the xml you posted then you get

<price>

<amount>20.00</amount>

<currency>US</currency>

</price>


Does you real code have a path step  /xxx after the comma expression? (that
would sort into document order)

David


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


--
http://dpcarlisle.blogspot.com/

Current Thread