[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

Re: [xsl] Sibling axis and as="element()"


Subject: Re: [xsl] Sibling axis and as="element()"
From: "andrew welch" <andrew.j.welch@xxxxxxxxx>
Date: Mon, 31 Jul 2006 17:27:04 +0100

On 7/31/06, David Carlisle <davidc@xxxxxxxxx> wrote:

> how do you go about making it explicit if you want it really explict you could use

<xsl:variable as="document-node()">
  <xsl:document>
    ... stuff


but note that the main (perhaps) difference between


<xsl:variable name="x">
  <xsl:sequence select="foo"/>
</xsl:sequence>

and

<xsl:variable name="x" as="element()*">
  <xsl:sequence select="foo"/>
</xsl:sequence>

isn't so much the implict document node as the implict copying. in the
second case $x references foo nodes in their original trees, whereas in
the first case, the nodes are _copied_ into the temporary tree so it's
the same as if you had used copy-of rather than sequence, so you get new
nodes with new identities, and unless MK is kindly optimising stuff
away, new memory usage.

Thanks, that makes sense (...I think :-)


In this case:

<xsl:variable name="foo" as="document-node()">
	<xsl:document>
		<foo/>
		<foo/>
		<foo/>
	</xsl:document>
</xsl:variable>

There is a document node and three child elements, that are siblings
of one another but that do not have a common parent?  How come in this
case there doesn't have to be a single root node?


Current Thread