Subject: Re: [xsl] Understanding XPath contains function From: "Dimitre Novatchev" <dnovatchev@xxxxxxxxx> Date: Sun, 30 Jul 2006 06:22:56 -0700 |
I'm confused by the difference in results when running the following xpath expressions against the same document:
/common/Oberbereich[6][.//@Kursart='Bildungsurlaub']
will give me Oberbereich[6] as a result as expected (because it has child elements that have a Kursart-Attribute of that value.
While /common/Oberbereich[6][contains(.//@Kursart,'Bildungsurlaub')] will not give me any results where it should at least give me the same or more results that the previous expression, should it not?
In the second case the first argument to the function contains() is a node-set.
In XPath 1.0 when a function expects a single argument and a node-set of two or more nodes is passed, (only) the first node is taken as the argument.
In your concrete case the first node passed is (.//@Kursart)[1]
and it happens so, that it doesn't contain the string 'Bildungsurlaub'
Therefore, the reference to the contains() function returns false() and the XPath expression /common/Oberbereich[6][contains(.//@Kursart,'Bildungsurlaub')]
-- Cheers, Dimitre Novatchev --------------------------------------- Truly great madness cannot be achieved without significant intelligence.
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] Understanding XPath contains , Ferdinand Soethe | Thread | Re: [xsl] Understanding XPath conta, Dimitre Novatchev |
[xsl] Understanding XPath contains , Ferdinand Soethe | Date | Re: [xsl] Understanding XPath conta, Dimitre Novatchev |
Month |