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