Re: [xsl] alternative to repeatedly walking the ancestor axis in 1.0

Subject: Re: [xsl] alternative to repeatedly walking the ancestor axis in 1.0
From: "Vladimir Nesterovsky" <vladimir@xxxxxxxxxxxxxxxxxxxx>
Date: Mon, 4 Aug 2008 03:38:42 -0700
> >> 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/

Current Thread