|
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 |