[xsl] xslt 1.0 vs xslt 2.0 problem

Subject: [xsl] xslt 1.0 vs xslt 2.0 problem
From: mark bordelon <markcbordelon@xxxxxxxxx>
Date: Wed, 3 Sep 2008 10:27:56 -0700 (PDT)
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>
...instead of what I need, namely this:
<resp>
 <A>
  <B a="foo bar bar"></B>
  <B a="bar bar foo"></B>
 </A>
 <A>
  <B a="foo bar foo"></B>
  <B a="bar foo bar"></B>
 </A>
</resp>

An attempt to alleviate this problem by amalgamating all the <B> together
using string-join, i.e.

//A[ contains( string-join(B/@a), "foo") ]

error-out because string-join is XSLT 2.0

So...what is the correct way to query through all child nodes using xslt 1.0?

Thanks Guys!

Sincerely,
Mark Bordelon
Getty Trust

Current Thread