Subject: RE: [xsl] changing the order of xml elements when doing XSLT From: "Xuegen Jin" <xjin_imi@xxxxxxxxx> Date: Wed, 18 Apr 2001 23:44:55 -0400 |
When you call <xsl:apply-templates/> in your <xsl:template match="record"> template, the child elements for "record" are processed in the document order, irrespective of the order of those matching template declarations. To have the order you want, you should simple do: <xsl:template match="record"> <newrecord> <xsl:apply-templates select="c"/> <xsl:apply-templates select="b"/> <xsl:apply-templates select="a"/> </newrecord> </xsl:template> or <xsl:template match="record"> <newrecord> <xsl:apply-templates > <xsl:sort select="name()" order="descending" /> </xsl:apply-templates> </newrecord> </xsl:template> -----Original Message----- From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx [mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx]On Behalf Of Charlie Wu Sent: Wednesday, April 18, 2001 8:41 PM To: XSL-List@xxxxxxxxxxxxxxxxxxxxxx Subject: [xsl] changing the order of xml elements when doing XSLT hi all.. i have a need to accomplish the following.. i.e. when doing an XSLT over an XML file.. have the output xml be in a specific order that is NOT the same as the order in the original XML. i guess it can only be done in the xsl file somehow.. if at all possible.. but i couldn't figure it out. to clarify what i mean.. here's an example: source.xml <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="mapper.xsl"?> <record> <a>1</a> <b>2</b> <c>3</c> </record> mapper.xsl <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format"> <xsl:output method="xml" omit-xml-declaration="yes" indent="no"/> <xsl:template match="/"> <xsl:apply-templates/> </xsl:template> <xsl:template match="record"> <newrecord><xsl:apply-templates/></newrecord> </xsl:template> <xsl:template match="c"> <CC> <xsl:value-of select="."/> </CC> </xsl:template> <xsl:template match="a"> <AA><xsl:value-of select="."/></AA> </xsl:template> <xsl:template match="b"> <BB> <xsl:value-of select="."/> </BB> </xsl:template> </xsl:stylesheet> current output: <newrecord xmlns:fo="http://www.w3.org/1999/XSL/Format"><AA>1</AA><BB>2</BB><CC>3</CC>< /newrecord> desired output: <newrecord xmlns:fo="http://www.w3.org/1999/XSL/Format"><CC>3</CC><BB>2</BB><AA>1</AA>< /newrecord> any ideas would be highly appreciated.. thanks! Charlie XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list _________________________________________________________ Do You Yahoo!? Get your free @yahoo.com address at http://mail.yahoo.com XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] changing the order of xml ele, Charlie Wu | Thread | RE: [xsl] changing the order of xml, Michael Kay |
RE: [xsl] transfer namespace within, Xuegen Jin | Date | [xsl] problem with xsl:variable and, Mandar Ogale |
Month |