[Home] [By Thread] [By Date] [Recent Entries]
On 8/1/06, Michael Kay <mike@xxxxxxxxxxxx> wrote:
> Given this XML: > > <xsl:variable name="foo" as="element(foo)+"> > <foo/> > <foo/> > <foo/> > </xsl:variable> > > I seem to remember David C mentioning something about using > as="element()" means the elements are no longer siblings... > but I can't find anything about it now. >
For example, I can do: <xsl:variable name="foo" as="document-node()">
<xsl:document>
<foo/><foo/><foo/>
</xsl:document>
</xsl:variable>...but then I can't do: <xsl:apply-templates select="$foo" mode="f"/> <xsl:template match="/[2]" mode="f"/> ...is this because "/[2]" was thought to be impossible, or a 1.0 compatiblity issue, but /[2] certainly exists here. Ultimately this all stems from a desire to give every variable and parameter an "as" attribute to take advantage of the "fail-early" policy of XSLT 2.0. In a multiple pass setup I would normally use element()+ on a variable containing rootless elements, but have ran into this sibling issue*. I've switched to using document-node() but have now hit this slightly non-intuitive part of / having multiple children. *It would be a useful feature if Saxon gave a warning if someone uses a sibling axis on an element in a rootless tree...similar to when the context node is an attribute (if that's feasible) cheers andrew
|

Cart



