Subject: Re: [xsl] Difficulty over understanding preceding-sibling From: Dimitre Novatchev <dnovatchev@xxxxxxxxx> Date: Sat, 3 Sep 2005 10:18:27 +1000 |
On 9/3/05, Joe Fawcett <joefawcett@xxxxxxxxxxx> wrote: > Can anyone explain why the first item being passed to the template has any > preceding-sibling? > XML: > <root> > <item id="1" /> > <item id="2" /> > <item id="3" /> > <item id="4" /> > <item id="5" /> > <item id="6" /> > <item id="7" /> > <item id="8" /> > <item id="9" /> > <item id="10" /> > </root> > > XSLT: > <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> > <xsl:param name="groupSize" select="3" /> > <xsl:template match="/"> > <new> > <xsl:call-template name="groupItems"> > <xsl:with-param name="items" select="root/item" /> > </xsl:call-template> > </new> > </xsl:template> > > <xsl:template name="groupItems"> > <xsl:param name="items" /> > <xsl:variable name="itemCount" select="count($items)" /> > <xsl:if test="$itemCount > 0"> > <group> > <xsl:for-each select="$items"> > <xsl:if test="position() <= $groupSize"> > <newItem id="{@id}"> > <xsl:if test="position() = 1"> > <xsl:attribute name="preceding-sibling-count"> > <xsl:value-of select="count(preceding-sibling::item)" /> > </xsl:attribute> > </xsl:if> > </newItem> > </xsl:if> > </xsl:for-each> > </group> > <xsl:call-template name="groupItems"> > <xsl:with-param name="items" select="$items[position() > $groupSize]" > /> > </xsl:call-template> > </xsl:if> > </xsl:template> > </xsl:stylesheet> > > Result (msxml version 4): > <new> > <group itemCount="10"> > <newItem id="1" preceding-sibling-count="0"/> > <newItem id="2"/> > <newItem id="3"/> > </group> > <group itemCount="7"> > <newItem id="4" preceding-sibling-count="3"/> > <newItem id="5"/> > <newItem id="6"/> > </group> > <group itemCount="4"> > <newItem id="7" preceding-sibling-count="6"/> > <newItem id="8"/> > <newItem id="9"/> > </group> > <group itemCount="1"> > <newItem id="10" preceding-sibling-count="9"/> > </group> > </new> > > Why doesn't the preceding-sibling-count show zero, or am I just up too late? Because this is exactly the number of preceding siblings of the current node. The "preceding-sibling" axis' scope is the current document, not a dynamically defined node-list. Most probably you want something else -- not the count of preceding siblings? Cheers, Dimitre Novatchev
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] Difficulty over understanding, Joe Fawcett | Thread | Re: [xsl] Difficulty over understan, Joe Fawcett |
[xsl] Difficulty over understanding, Joe Fawcett | Date | Re: [xsl] Difficulty over understan, Joe Fawcett |
Month |