Subject: Re: [xsl] How to sort Using Dom and SelectNodes From: "Malcolm Macaulay" <malcolm_xslt_list@xxxxxxxxxxx> Date: Thu, 5 Jun 2003 15:49:28 -0500 |
Hi Karl, With MSXML there is no method to sort nodes within the DOM. Your best bet would be to create a simple XSLT (see below) to order the doc. The use code something like: var xmlUnsortedDoc = new ActiveXObject("Msxml2.DOMDocument.4.0"); var xmlSortedDoc = new ActiveXObject("Msxml2.DOMDocument.4.0"); var xmlSortXSLT = new ActiveXObject("Msxml2.DOMDocument.4.0"); ... code to load the XML into xmlUnsortedDoc ... ... code to load the XSLT (see below) into xmlSortXSLT // tranform the unsorted doc and stuff the resulting XML into a second DOM xmlOrderedDoc.loadXML(xmlUnorderedDoc.transformNode(xmlSortXSLT)); ... then get the required nodes with .selectNodes method This XSLT should do the trick. <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> <xsl:template match="/"> <xsl:apply-templates> <xsl:sort select="@order" data-type="number" order="ascending"/> </xsl:apply-templates> </xsl:template> <xsl:template match="node()|@*"> <xsl:copy> <xsl:apply-templates select="node()|@*"> <xsl:sort select="@order" data-type="number" order="ascending"/> </xsl:apply-templates> </xsl:copy> </xsl:template> </xsl:stylesheet> Hope that helps Malcolm ----- Original Message ----- From: "Rick Taylor" <taylor@xxxxxxxx> To: <xsl-list@xxxxxxxxxxxxxxxxxxxxxx> Sent: Thursday, June 05, 2003 1:55 PM Subject: Re: [xsl] How to sort Using Dom and SelectNodes > I assume you are referring to coding for a browser. I suspect that you > could code this without too much difficulty. Maybe create an array from > the nodeset and sort it. > > -rick > > At 01:40 PM 6/4/03 -0700, you wrote: > >[Rick] > >Any way to do this without a stylesheet, just with the XML Dom (with a > >method)? > >I'm trying to avoid the whole "transformation" piece of this... but mabye I > >can't. > >Karl > > > >----- Original Message ----- > >From: "Rick Taylor" <taylor@xxxxxxxx> > >To: <xsl-list@xxxxxxxxxxxxxxxxxxxxxx> > >Sent: Wednesday, June 04, 2003 12:34 PM > >Subject: Re: [xsl] How to sort Using Dom and SelectNodes > > > > > > > Karl, > > > > > > This should give you what you want. > > > > > > <xsl:template match="xml"> > > > <xsl:apply-templates select="FLD[@order]"> > > > <xsl:sort select="@order" data-type="number"/> > > > </xsl:apply-templates> > > > </xsl:template> > > > > > > <xsl:template match="FLD"> > > > <xsl:value-of select="."/> > > > </xsl:template> > > > > > > -rick > > > > > > At 11:40 AM 6/4/03 -0700, you wrote: > > > >Hello, > > > > > > > >I have a simple selectnodes method which grabs nodes from a nodes list > >who > > > >have the attribute ORDER. I'd actually like to select and then order the > > > >result based on the value of the ORDER attribute. So: > > > > > > > ><xml> > > > > <FLD order="3">run</FLD> > > > > <FLD order="1">See</FLD> > > > > <FLD>foo</FLD> > > > > <FLD order="2">spot</FLD> > > > > <FLD>bar</FLD> > > > ></xml> > > > > > > > >Would yield the result fragment (tree?): > > > > <FLD order="1">See</FLD> > > > > <FLD order="2">spot</FLD> > > > > <FLD order="3">run</FLD> > > > > > > > >How can I achieve this? > > > > > > > >Karl > > > > > > > > > > > > XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list > > > > > > Rick Taylor > > > XML Developer > > > PPDM Association > > > > > > > > > XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list > > > > > > > > > > > > > > > XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list > > Rick Taylor > XML Developer > PPDM Association > > > 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] How to sort Using Dom and, Rick Taylor | Thread | [xsl] merging multiple xml files, RPeterson |
Re: [xsl] How to sort Using Dom and, Rick Taylor | Date | RE: [xsl] walking a tree, Americo Albuquerque |
Month |