xsl-list
[Top] [All Lists]

RE: XPath: better way to check for text nodes that aren't descendents of x or y nodes?

2003-05-14 14:11:48
[ Lars Huttar]

Tom Passim wrote:
You could use

test='not(.//*[local-name() != "vernac" and local-name() !=
"gloss"]/text()[1]
            | text())'

Hmm... I don't think this would give the correct result in all cases,
e.g. if we have
  ./llcd:vernac/llcd:stretch/text()
this should be legal, but it would show up as illegal by your test.


Oh, yes, I read your criterion as "children" but you really wrote
"descendants".  If llcd:vernac and llcd:gloss could only be immediate
children of the current node, then you could just change it to this -

count(*[local-name() != "vernac" 
               and local-name() !="gloss"]//text()[1]
        | text())

Otherwise this kind of approach gets more complicated and one of the
other suggestions already posted would be better.

As to efficiency, that is likely to be very processor-dependent since it
may depend on optimizations.  You would need to test to be sure.

Cheers,

Tom P

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list