Out of interest, does xml:lang annotate the input tree, or does the
lang() function walk the ancestor axis behind the scenes? Or
is it all implementation dependent?
It's implementation-dependent, of course.
Saxon walks the ancestor axis when you use the lang() function. I think it's
used too rarely to be worth optimizing.
So (for Saxon anyway) doing:
test="lang('foo', .)"
is pretty much the same as:
test="ancestor-or-self::*/@xml:lang = 'foo'"
except that the lang() function should return true if the lang tested
is a subset of that declared in the attribute.
No. See: http://www.w3.org/TR/xpath-functions/#func-lang
fn:lang($testlang as xs:string?, $node as node()) as xs:boolean
"This function tests whether the language of $node, or the context item if the
second argument is omitted, as specified by xml:lang attributes is the same as,
or is a sublanguage of, the language specified by $testlang."
Please notice "sublanguage" word.
P.S. You seems to be obsessed with an optimization of ancestor walks.
Are you sure you have a problem in the first place?
--
Vladimir Nesterovsky
http://www.nesterovsky-bros.com/
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--