xsl-list
[Top] [All Lists]

RE: [xsl] xslt 1.0 vs xslt 2.0 problem

2008-09-03 13:35:17
From: mark bordelon [mailto:markcbordelon(_at_)yahoo(_dot_)com]
Sent: Wednesday, September 03, 2008 1:28 PM
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
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.



--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--