Re: [xsl] Adding element to xml snippet using xslt

Subject: Re: [xsl] Adding element to xml snippet using xslt
From: Nishi Bhonsle <nishi.bhonsle@xxxxxxxxxx>
Date: Thu, 17 Feb 2005 15:05:50 -0800
Joris Gillis wrote:

Tempore 16:55:31, die 02/17/2005 AD, hinc in xsl-list@xxxxxxxxxxxxxxxxxxxxxx scripsit Nishi Bhonsle <nishi.bhonsle@xxxxxxxxxx>:

I have the following xsl, that converts the initial snippet to the resultant but i observed that the <started> element occurs before the <drillOutDir> element. How can I change my xsl to achieve the above result xml in the exact order?


Hi,


You can use an 'xsl:sort' instruction to make sure the 'server' element is processed first.

e.g.

<xsl:template match="abc:configuration">
<xsl:copy>
<xsl:copy-of select="@*[local-name() != 'rmi' and local-name() != 'locale']"/>
<xsl:attribute name="useMgmt">
<xsl:text>true</xsl:text></xsl:attribute>
<xsl:attribute name="metadata"><xsl:text>true</xsl:text></xsl:attribute>

<xsl:apply-templates>
<xsl:sort select="boolean(self::server)" order="descending"/>
</xsl:apply-templates>

I tried this xslt change, but I notice that the "server" element appears above the "started" element in the output xml as follows--


<abc:configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xsi:schemaLocation="http://oracle.com/xmlns/abcst/configuration configuration.xsd" webcache="false" useMgmt="true" metadata="true">
<drillOutDir/>
<server useLogFile="true" logLevel="error">
<activation enabled="true" maxSessions="20" timeout="30"/>
</server>
<started status="true"/>.........


What can I change the xslt to preserve the order ie display the "server" element after the "started" element.
Also, is there a way that i can change
<started status="true"/>
to
<started status="true">This application was stopped.</started>


Thanks.


</xsl:copy>
<xsl:text></xsl:text>
</xsl:template>
    <xsl:template match="server">
<xsl:element name="drillOutDir">            </xsl:element>
</xsl:template>



regards,

Current Thread