Subject: RE: [xsl] XSLT2 xsl:sequence blocking ancestor refs? From: "Michael Kay" <mike@xxxxxxxxxxxx> Date: Tue, 27 Mar 2007 13:42:35 +0100 |
The construct <xsl:variable name="b"> <xsl:sequence select="$p"/> </xsl:variable> creates a temporary tree: $b is a document node, with a copy of $p attached as a child. If you want $b to be the same node as $p, use <xsl:variable name="b" select="$p"/> or <xsl:variable name="b" as="node()"> <xsl:sequence select="$p"/> </xsl:variable> See http://www.w3.org/TR/xslt20/#temporary-trees Michael Kay http://www.saxonica.com/ > -----Original Message----- > From: Marshall Schor [mailto:msa@xxxxxxxxx] > Sent: 27 March 2007 13:32 > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Subject: [xsl] XSLT2 xsl:sequence blocking ancestor refs? > > Using xsl:sequence seems to chop off the ability to reference > ancestors of selected nodes. > Is this working-as-designed? > > Here's a quick demo. In this piece of test code, the > variable "b" has no parent, while the variable "a" does: > > <xsl:variable name="in"> > <e1> > <e2> > <e3> > <e4>yes</e4> > </e3> > </e2> > </e1> > </xsl:variable> > > <xsl:template match="anything_to_get_started"> > > <xsl:variable name="p" select="$in/e1/e2/e3/e4"/> > <xsl:variable name="a" select="$p"/> > <xsl:message select="'parent of a'"/> > <xsl:message select="$a/parent::node()"/> > > <xsl:variable name="b"> > <xsl:sequence select="$p"/> > </xsl:variable> > <xsl:message select="'parent of b'"/> > <xsl:message select="$b/parent::node()"/> > > </xsl:template> > > The output using Saxon 8.9 > > [java] parent of a > [java] <e3><e4>yes</e4></e3> > [java] parent of b > > > -Marshall Schor
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] XSLT2 xsl:sequence blocking a, Marshall Schor | Thread | [xsl] traversing up nodes until a c, xslt user |
[xsl] XSLT2 xsl:sequence blocking a, Marshall Schor | Date | RE: [xsl] What's wrong with my ance, Austin, Darrel |
Month |