[XSL-LIST Mailing List Archive Home]
[By Thread]
[By Date]
RE: [xsl] node-set() confusion
Subject: RE: [xsl] node-set() confusion From: "Michael Kay" <mike@xxxxxxxxxxxx> Date: Sat, 16 Oct 2004 23:38:54 +0100 |
xsl:for-each changes the context node, in this case to a node in the result tree fragment. Path expressions starting with "/" always select nodes within the tree containing the context node. If you want to select nodes in the original source tree, create a global variable: <xsl:variable name="root" select="/"/> and then select relative to that, e.g. $root/root/foo/bar Michael Kay http://www.saxonica.com/ > -----Original Message----- > From: Alexander Macdonald [mailto:lists@xxxxxxxxxx] > Sent: 16 October 2004 23:54 > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Subject: [xsl] node-set() confusion > > I originally posted this question in the xalan-j-users mailinglist > thinking it was a bug in Xalan but after getting the same result with > the saxon xslt processor I'm not too sure... > > I'm having problems when using the exslt:node-set() function as well. > I'm not sure if it's related or if I've just missed something > basic but > I'll explain it anyway: > > *** here is my xml document: > > <root> > <foo> > <bar id="1"/> > <bar id="2"/> > <bar id="3"/> > </foo> > </root> > > > > > *** and here is my xslt script: > > <xsl:stylesheet version="1.0" > xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > xmlns:exslt="http://exslt.org/common"> > > <xsl:output method="html"/> > > <xsl:template match="/"> > <xsl:message>correct: <xsl:for-each > select="/root/foo/bar">found! </xsl:for-each></xsl:message> > > <xsl:variable name="result-tree-fragment"> > <xsl:for-each select="/root/foo/bar"> > <bar id="{@id}"/> > </xsl:for-each> > </xsl:variable> > > <xsl:for-each select="/root/foo"> > <xsl:message>still correct: <xsl:for-each > select="/root/foo/bar">found! </xsl:for-each></xsl:message> > </xsl:for-each> > > <xsl:for-each > select="exslt:node-set($result-tree-fragment)/bar"> > <xsl:message>broken: <xsl:for-each > select="/root/foo/bar">found!</xsl:for-each></xsl:message> > </xsl:for-each> > </xsl:template> > > </xsl:stylesheet> > > > > > when parsed by xalan the output looks like this: > > file:/home/test.xsl; Line #10; Column #-1; correct: found! > found! found! > file:/home/test.xsl; Line #19; Column #-1; still correct: > found! found! > found! > file:/home/test.xsl; Line #23; Column #-1; broken: > file:/home/test.xsl; Line #23; Column #-1; broken: > file:/home/test.xsl; Line #23; Column #-1; broken: > > > I expected it to look like this: > > file:/home/test.xsl; Line #10; Column #-1; correct: found! > found! found! > file:/home/test.xsl; Line #19; Column #-1; still correct: > found! found! > found! > file:/home/test.xsl; Line #23; Column #-1; broken: found! > found! found! > file:/home/test.xsl; Line #23; Column #-1; broken: found! > found! found! > file:/home/test.xsl; Line #23; Column #-1; broken: found! > found! found! > > > can anybody help?
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] node-set() confusion, Alexander Macdonald | Thread | [xsl] Need Help with XSL Multicolum, soporte |
RE: [xsl] lang function in a named , Michael Kay | Date | [xsl] node-set() confusion, Alexander Macdonald |
Month |