Subject: RE: [xsl] preceding-sibling after sort gives unexpected result From: "Michael Kay" <mhk@xxxxxxxxx> Date: Thu, 11 Sep 2003 19:01:13 +0100 |
> I am trying to process a document similar to the one below, > using the stylesheet below. My problem is that after I have > performed the sort, I appear to get the preceding sibling in > the original document order rather than in the newly sorted order. preceding-sibling finds a node's neighbours in the tree that it belongs to, not its neighbours in the list of nodes that you happen to be processing at the time. You can construct a new tree containing copies of the node and (using xx:node-set()) find the preceding-sibling on this new tree. Michael Kay > > Looking at the results, you can see that for result number 4, > I was hoping to get (a) as my preceding sibling, and not (c), > which was the original document order. > > This is an unexpected result, and not at all what I was > hoping for. Is this supposed to happen, or is this just a > quirk of MSXML? > > > Kaine > > > Source XML: > ----------- > <root> > <parent> > <child name="a">40</child> > <child name="b">60</child> > <child name="c">50</child> > <child name="d">30</child> > <child name="e">20</child> > </parent> > </root> > > > Stylesheet: > ----------- > <xsl:template match="root"> > <results> > <xsl:apply-templates select="parent"/> > </results> > </xsl:template> > > > <xsl:template match="parent"> > <xsl:apply-templates select="child"> > <xsl:sort select="." data-type="number" > order="descending"/> > </xsl:apply-templates> > </xsl:template> > > > <xsl:template match="child"> > <result number="{position()}"> > <current-child-name> > <xsl:value-of select="@name"/> > </current-child-name> > <current-child-value> > <xsl:value-of select="."/> > </current-child-value> > <preceding-sibling-name> > <xsl:value-of > select="preceding-sibling::child[1]/@name"/> > </preceding-sibling-name> > </result> > </xsl:template> > > > Result: > ------- > <results> > <result number="1"> > <current-child-name>b</current-child-name> > <current-child-value>60</current-child-value> > <preceding-sibling-name>a</preceding-sibling-name> > </result> > <result number="2"> > <current-child-name>c</current-child-name> > <current-child-value>50</current-child-value> > <preceding-sibling-name>b</preceding-sibling-name> > </result> > <result number="3"> > <current-child-name>a</current-child-name> > <current-child-value>40</current-child-value> > <preceding-sibling-name/> > </result> > <result number="4"> > <current-child-name>d</current-child-name> > <current-child-value>30</current-child-value> > <preceding-sibling-name>c</preceding-sibling-name> > </result> > <result number="5"> > <current-child-name>e</current-child-name> > <current-child-value>20</current-child-value> > <preceding-sibling-name>d</preceding-sibling-name> > </result> > </results> > > > Post sort: > ---------- > <root> > <parent> > <child name="b">60</child> > <child name="c">50</child> > <child name="a">40</child> > <child name="d">30</child> > <child name="e">20</child> > </parent> > </root> > > > My system: > ---------- > XP Professional > IE6 SP2 > MSXML4 SP2 > > > SNIP > > > > PROACTIS Group Limited > Holtby Manor, Stamford Bridge Road, York, YO19 5LL > Tel +44 (0)1904 481999 Fax +44 (0)1904 481666 > Visit us at www.proactis.com <http://www.proactis.com/> > > PROACTIS (r) - Control spend. Streamline purchasing. > > ************************************************************ > The information contained in this email is intended only for > the individual to whom it is addresses. It may contain > privileged and confidential information. If you have > received this message in error or there are any problems, > please notify the sender immediately and delete the message > from your computer. The unauthorised use, disclosure, > copying or alteration of this message is forbidden. PROACTIS > Group Limited will not be liable for direct, special, > indirect or consequential damage as a result of any virus > being passed on, or arising from alteration of the content of > this message by a third party. > ************************************************************ > > 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] preceding-sibling after s, J.Pietschmann | Thread | [xsl] Re: preceding-sibling after s, Dimitre Novatchev |
Re: [xsl] How to split table colums, J.Pietschmann | Date | Re: [xsl] referencing to other xml , J.Pietschmann |
Month |