Hi Robert,
ah, this seems to explain something else i was looking at. if i have
the path
//element[(_at_)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[(_at_)* = '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[(_at_)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