Subject: RE: XPath: better way to check for text nodes that aren't descendents of x or y nodes?
From: "Michael Kay" <mhk@xxxxxxxxx>
Date: Wed, 14 May 2003 19:14:12 +0100
|
> My requirement is to check for validity of certain XML data
> as follows: all text() nodes descended from . must be
> descendants of either llcd:vernac or llcd:gloss. (By the way,
> if it helps, the llcd:vernac or llcd:gloss will be
> descendants of . too, not ancestors.)
>
> My current test is
> test=".//text()[not(ancestor::llcd:vernac | ancestor::llcd:gloss)]"
>
> If this test is true, the data is invalid.
>
> But is there a more efficient way to do this?
You could try
count(.//text()) = count(.//llcd:vernac//text() | .//llcd:glos//text())
Michael Kay
> Something that checks for llcd:vernac|llcd:gloss along the
> way, instead of going down the descendant axis and then back
> up the ancestor axis (twice)? Something along the lines of
> test="./(not(llcd:vernac|llcd:gloss)/)*/text()"
> where * means "0 or more times".
>
> I guess I could do
> test="count(.//text()) >
> count(.//llcd:vernac//text() | .//llcd:gloss//text())"
> but I'm not sure that's any more efficient.
>
> This is not a big deal, just wanting to be as efficient as
> reasonably possible.
>
> Lars
>
>
> XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
>
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
|