Subject: RE: [xsl] position() return's only even numbers for nested elements From: "Michael Kay" <mhk@xxxxxxxxx> Date: Fri, 9 May 2003 20:06:33 +0100 |
A FAQ. You are counting the whitespace text nodes as well as the elements. Use <xsl:strip-space> to get rid of the text nodes. Michael Kay > -----Original Message----- > From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx > [mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of > DURDINA Michal > Sent: 09 May 2003 16:52 > To: 'xsl-list@xxxxxxxxxxxxxxxxxxxxxx' > Subject: [xsl] position() return's only even numbers for > nested elements > > > Hello, > please take a look at this xsl fragment, maybe you find a > simple explanation to strange behaviour of position() > function for nested elements. > > Consider this input xml: > <uml> > <package id="1"/> > <package id="2"/> > <package id="3"> > <package id="31"/> > <package id="32"/> > </package> > <package id="4"> > <package id="41"> > <package id="411"/> > <package id="412"/> > <package id="413"/> > </package> > </package> > <package id="5"/> > </uml> > > Now I want to print position of every single 'package' element: > > <xsl:stylesheet version="1.0" > xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> > > <xsl:template match="uml"> > <result> > <xsl:apply-templates select="package"/> > </result> > </xsl:template> > > <xsl:template match="package"> > <xsl:copy> > <xsl:copy-of select="@id"/> > <xsl:attribute name="position"><xsl:value-of > select="position()"/></xsl:attribute> > <xsl:apply-templates/> > </xsl:copy> > </xsl:template> > > </xsl:stylesheet> > > And the result under Saxon and Xalan is: > <result> > <package id="1" position="1"/> > <package id="2" position="2"/> > <package id="3" position="3"> > <package id="31" position="2"/> > <package id="32" position="4"/> > </package> > <package id="4" position="4"> > <package id="41" position="2"> > <package id="411" position="2"/> > <package id="412" position="4"/> > <package id="413" position="6"/> > </package> > </package> > <package id="5" position="5"/> > </result> > > Why all nested 'package' element have even positions (2, 4, > 6, ...) but top-level 'package' elements positions behaves > right (1, 2, 3,...) ??? > > When I replace <xsl:apply-templates/> with > <xsl:apply-templates select="packages"/>, then it works right > also for nested 'packages' elements. > > I''ll be thankful for every explanation. > > Michal > > XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list > XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] position() return's only , Jeni Tennison | Thread | [xsl] Perpetuating xsl instructions, Alan Gardner |
Re: [xsl] how to display html data,, asim | Date | RE: [xsl] Process HTML Doc with XSL, Passin, Tom |
Month |