At 2012-11-02 21:44 -0400, Graydon wrote:
On Fri, Nov 02, 2012 at 11:54:22PM +0100, Philipp Kursawe scripsit:
> I have this rather complex xpath:
>
> //element[@*[contains(translate(., translate(.,
> 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789', ''),
> ''), translate('string', translate('string',
> 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789', ''),
> ''))]]
>
> where "string" would be an input string with non-alpha chars and
> spaces and mixed letter cases.
> I would like to select any element whose attributes contain parts of
> the input string, stripped by non-alpha chars and whitespace.
>
> Problem is, the xpath does not work for mixed char input strings.
Wouldn't
//element[matches(@*,replace($string,'[\p{L}\p{Nd}]',''),'i')]
work?
Because of the cardinality of the first argument to matches(), not
quite. It is expecting a singleton and you are supplying a
sequence. You would have to restructure the expression and see if
the following would satisfy the original poster's requirement:
//element[@*/matches(.,replace($string,'[\p{L}\p{Nd}]',''),'i')]
... remembering that:
$nodes/expression(.)
... is the same as:
for $n in $nodes return expression($n)
Thus, my replacement returns the sequence of Boolean values for the
predicate.
Wait!! For a predicate, one cannot evaluate the effective Boolean
value of a sequence of Boolean values, so I'm guessing now my first
thought likely would not work.
So let's rewrite it as follows:
//element[@*[matches(.,replace($string,'[\p{L}\p{Nd}]',''),'i')]]
Now the data type of the predicate is a node set and there will be a
non-empty node set of attribute nodes of the ones that satisfy the matches().
That would likely work better than my first thought. Assuming the
matches() satisfies what the original poster wants.
I hope this helps. And I hope preserving my first mistaken thought
is instructive, rather than just editing it out of my response.
. . . . . . . . . . Ken
--
Contact us for world-wide XML consulting and instructor-led training
Free 5-hour lecture: http://www.CraneSoftwrights.com/links/udemy.htm
Crane Softwrights Ltd. http://www.CraneSoftwrights.com/s/
G. Ken Holman mailto:gkholman(_at_)CraneSoftwrights(_dot_)com
Google+ profile: https://plus.google.com/116832879756988317389/about
Legal business disclaimers: http://www.CraneSoftwrights.com/legal
--~------------------------------------------------------------------
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>
--~--