RE: [xsl] xslt 1.0 vs xslt 2.0 problem

Subject: RE: [xsl] xslt 1.0 vs xslt 2.0 problem
From: "Houghton,Andrew" <houghtoa@xxxxxxxx>
Date: Wed, 3 Sep 2008 13:34:32 -0400
> From: mark bordelon [mailto:markcbordelon@xxxxxxxxx]
> Sent: Wednesday, September 03, 2008 1:28 PM
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] xslt 1.0 vs xslt 2.0 problem
>
> Dear Gents:
>
> I have looked everywhere for the solution to this problem and never
> seem to get what to the root of the issue. Here is the problem in a
> nutshell:
>
> I have XML of this structure:
>
> <resp>
>  <A>
>   <B a="foo bar bar"></B>
>   <B a="bar bar foo"></B>
>   <B a="boo far far"></B>
>  </A>
>  <A>
>   <B a="far boo"></B>
>   <B a="foo bar foo"></B>
>   <B a="bar foo bar"></B>
>  </A>
> </resp>
>
> Using XSLT 1.0 (which I must, since I am constrained to use ASP.NET
> 2.0) I need to query the XML above to find all <A> if any of its
> children <B> fulfill a certain requirement.
>
> //A[ contains(B/@a, "foo") ]
>
> What I am seeing is that this XSL only checks the FIRST child node's
> (B) attribute instead of checking all of them. In other words, I only
> get this:
> <resp>
>  <A>
>   <B a="foo bar bar"></B>
>  </A>
> </resp>

Two points.  The obvious one, since you are using ASP.NET make sure you
are using SelectNodes and not SelectSingleNode, otherwise you will get
similar behaviour.  The second one is that I think your XPath expression
should probably be: //A[B[contains(@a, "foo")]]


Andy.

Current Thread