Subject: Re: trying to create a node-set of attribute nodes
From: Jeni Tennison <jeni@xxxxxxxxxxxxxxxx>
Date: Mon, 10 Mar 2003 17:38:24 +0000
|
Hi Robert,
> ah, this seems to explain something else i was looking at. if i have
> the path
>
> //element[@attr = "value"]
>
> this will obviously select all "element"s with attribute "attr"
> whose value is "value". if i were to write that out the long way, i
> would get
>
> //element[string(@attr) = "value"]
>
> is that right? that is, using an attribute in a string context
> forces it to be converted into its "string-value" value. ok, things
> are starting to make more sense.
That's more-or-less right. It's a little complicated by the fact that
when you compare a node set with a value then you're actually testing
whether *any* of the nodes in the node set are equal to that value. So
for example:
//element[@* = 'value']
would test whether *any* of the attributes on an <element> element in
the document had the value 'value'.
But in the context of testing each individual node, yes, when you
compare a node to a string, you're actually comparing the string value
of the node to the string. And since each element can only have one
attribute named 'attr', the path:
//element[@attr = 'value']
is equivalent to:
//element[string(@attr) = 'value']
Cheers,
Jeni
---
Jeni Tennison
http://www.jenitennison.com/
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
|