[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

xsl:sort working for xsl:for-each but not for xsl:app

Subject: xsl:sort working for xsl:for-each but not for xsl:apply-templates
From: "Nestor Urquiza" <nestor.urquiza@xxxxxxxxxxxxxx>
Date: Tue, 1 Mar 2005 15:16:59 -0500
xsl sort following sibling
Hi everyone. Please take a look to the xml and xsl and let me know what I am
missing ... When I use as in the example below xsl:apply-templates I always
get as result "Start","MotoGP 1" no matter how the sorting order is defined.
If I use xsl:for-each the sort works .... 

Thanks in advance
Nestor

XML
-----
<ApplicationCatalogue name="35000_truetones">
	<Category name="dorna" description="">
		<Product code="TT070000004" position="1">
			<Alias isDefault="true">
				<Name>START</Name>
				<Extra></Extra>
			</Alias>
			<Attributes>
	
<OTAobject_general_title>Start</OTAobject_general_title>
	
<OTAobject_otaother_rights>Dorna</OTAobject_otaother_rights>
	
<OTAobject_general_name>TT070000004</OTAobject_general_name>
	
<OTAobject_otaother_namepreview>Start</OTAobject_otaother_namepreview>
	
<OTAobject_general_language>0</OTAobject_general_language>
	
<OTAobject_otaother_direct>1</OTAobject_otaother_direct>
	
<OTAobject_otaother_author>Artist4</OTAobject_otaother_author>
	
<OTAobject_otadescr_type>truetones</OTAobject_otadescr_type>
	
<OTAobject_general_category></OTAobject_general_category>
			</Attributes>
		</Product>
		<Product code="TT070000002" position="2">
			<Alias isDefault="true">
				<Name>MOTO2</Name>
				<Extra></Extra>
			</Alias>
			<Attributes>
				<OTAobject_general_title>MotoGP
2</OTAobject_general_title>
	
<OTAobject_otaother_rights>Dorna</OTAobject_otaother_rights>
	
<OTAobject_general_name>TT070000002</OTAobject_general_name>
				<OTAobject_otaother_namepreview>MotoGP
2</OTAobject_otaother_namepreview>
	
<OTAobject_general_language>0</OTAobject_general_language>
	
<OTAobject_otaother_direct>1</OTAobject_otaother_direct>
	
<OTAobject_otadescr_type>truetones</OTAobject_otadescr_type>
	
<OTAobject_general_category></OTAobject_general_category>
			</Attributes>
		</Product>
		<Product code="TT070000003" position="3">
			<Alias isDefault="true">
				<Name>CRASH</Name>
				<Extra></Extra>
			</Alias>
			<Attributes>
	
<OTAobject_general_title>Crash</OTAobject_general_title>
	
<OTAobject_otaother_rights>Dorna</OTAobject_otaother_rights>
	
<OTAobject_general_name>TT070000003</OTAobject_general_name>
	
<OTAobject_otaother_namepreview>Crash</OTAobject_otaother_namepreview>
	
<OTAobject_general_language>0</OTAobject_general_language>
	
<OTAobject_otaother_direct>1</OTAobject_otaother_direct>
	
<OTAobject_otadescr_type>truetones</OTAobject_otadescr_type>
	
<OTAobject_general_category></OTAobject_general_category>
			</Attributes>
		</Product>
		<Product code="TT070000001" position="4">
			<Alias isDefault="true">
				<Name>MOTO1</Name>
				<Extra></Extra>
			</Alias>
			<Attributes>
				<OTAobject_general_title>MotoGP
1</OTAobject_general_title>
	
<OTAobject_otaother_rights>Dorna</OTAobject_otaother_rights>
	
<OTAobject_general_name>TT070000001</OTAobject_general_name>
				<OTAobject_otaother_namepreview>MotoGP
1</OTAobject_otaother_namepreview>
	
<OTAobject_general_language>0</OTAobject_general_language>
	
<OTAobject_otaother_direct>1</OTAobject_otaother_direct>
	
<OTAobject_otaother_author>Artist1</OTAobject_otaother_author>
	
<OTAobject_otadescr_type>truetones</OTAobject_otadescr_type>
	
<OTAobject_general_category></OTAobject_general_category>
			</Attributes>
		</Product>
	</Category>
	<Category name="new" description="">
		<Product code="TT070000004" position="0">
			<Alias isDefault="true">
				<Name>START</Name>
				<Extra></Extra>
			</Alias>
			<Attributes>
	
<OTAobject_general_title>Start</OTAobject_general_title>
	
<OTAobject_otaother_rights>Dorna</OTAobject_otaother_rights>
	
<OTAobject_general_name>TT070000004</OTAobject_general_name>
	
<OTAobject_otaother_namepreview>Start</OTAobject_otaother_namepreview>
	
<OTAobject_general_language>0</OTAobject_general_language>
	
<OTAobject_otaother_direct>1</OTAobject_otaother_direct>
	
<OTAobject_otaother_author>Artist4</OTAobject_otaother_author>
	
<OTAobject_otadescr_type>truetones</OTAobject_otadescr_type>
	
<OTAobject_general_category></OTAobject_general_category>
			</Attributes>
		</Product>
		<Product code="TT070000001" position="0">
			<Alias isDefault="true">
				<Name>MOTO1</Name>
				<Extra></Extra>
			</Alias>
			<Attributes>
				<OTAobject_general_title>MotoGP
1</OTAobject_general_title>
	
<OTAobject_otaother_rights>Dorna</OTAobject_otaother_rights>
	
<OTAobject_general_name>TT070000001</OTAobject_general_name>
				<OTAobject_otaother_namepreview>MotoGP
1</OTAobject_otaother_namepreview>
	
<OTAobject_general_language>0</OTAobject_general_language>
	
<OTAobject_otaother_direct>1</OTAobject_otaother_direct>
	
<OTAobject_otaother_author>Artist1</OTAobject_otaother_author>
	
<OTAobject_otadescr_type>truetones</OTAobject_otadescr_type>
	
<OTAobject_general_category></OTAobject_general_category>
			</Attributes>
		</Product>
	</Category>
	<Category name="top" description="">
		<Product code="TT070000004" position="0">
			<Alias isDefault="true">
				<Name>START</Name>
				<Extra></Extra>
			</Alias>
			<Attributes>
	
<OTAobject_general_title>Start</OTAobject_general_title>
	
<OTAobject_otaother_rights>Dorna</OTAobject_otaother_rights>
	
<OTAobject_general_name>TT070000004</OTAobject_general_name>
	
<OTAobject_otaother_namepreview>Start</OTAobject_otaother_namepreview>
	
<OTAobject_general_language>0</OTAobject_general_language>
	
<OTAobject_otaother_direct>1</OTAobject_otaother_direct>
	
<OTAobject_otaother_author>Artist4</OTAobject_otaother_author>
	
<OTAobject_otadescr_type>truetones</OTAobject_otadescr_type>
	
<OTAobject_general_category></OTAobject_general_category>
			</Attributes>
		</Product>
		<Product code="TT070000001" position="0">
			<Alias isDefault="true">
				<Name>MOTO1</Name>
				<Extra></Extra>
			</Alias>
			<Attributes>
				<OTAobject_general_title>MotoGP
1</OTAobject_general_title>
	
<OTAobject_otaother_rights>Dorna</OTAobject_otaother_rights>
	
<OTAobject_general_name>TT070000001</OTAobject_general_name>
				<OTAobject_otaother_namepreview>MotoGP
1</OTAobject_otaother_namepreview>
	
<OTAobject_general_language>0</OTAobject_general_language>
	
<OTAobject_otaother_direct>1</OTAobject_otaother_direct>
	
<OTAobject_otaother_author>Artist1</OTAobject_otaother_author>
	
<OTAobject_otadescr_type>truetones</OTAobject_otadescr_type>
	
<OTAobject_general_category></OTAobject_general_category>
			</Attributes>
		</Product>
		<Product code="TT070000003" position="0">
			<Alias isDefault="true">
				<Name>CRASH</Name>
				<Extra></Extra>
			</Alias>
			<Attributes>
	
<OTAobject_general_title>Crash</OTAobject_general_title>
	
<OTAobject_otaother_rights>Dorna</OTAobject_otaother_rights>
	
<OTAobject_general_name>TT070000003</OTAobject_general_name>
	
<OTAobject_otaother_namepreview>Crash</OTAobject_otaother_namepreview>
	
<OTAobject_general_language>0</OTAobject_general_language>
	
<OTAobject_otaother_direct>1</OTAobject_otaother_direct>
	
<OTAobject_otadescr_type>truetones</OTAobject_otadescr_type>
	
<OTAobject_general_category></OTAobject_general_category>
			</Attributes>
		</Product>
	</Category>
</ApplicationCatalogue>

XSLT
----
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.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
select="/ApplicationCatalogue/Category[@name='new']/Product"> 
        <xsl:sort select="Attributes/OTAobject_general_title"
order="descending"/>   
		
	 </xsl:apply-templates> 
</xsl:template>
 
<xsl:template match="Product">
   <xsl:value-of select="Attributes/OTAobject_general_title"/><br/>
</xsl:template>


</xsl:stylesheet>

-----Original Message-----
From: Joris Gillis [mailto:roac@xxxxxxxxxx] 
Sent: Tuesday, March 01, 2005 3:05 PM
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: Re:  is recursion the best way to solve this?

Tempore 20:44:51, die 03/01/2005 AD, hinc in  
xsl-list@xxxxxxxxxxxxxxxxxxxxxx scripsit anil jacob <anujcb@xxxxxxxxx>:

> I have been trying to write an xsl transfor for
> converting the following src xml to dest xml. No
> success yet, wondering if anyone of you have faced
> similar problem, appreciate if you could share any
> ideas. The problem is how to wrap the OuterTag over
> the InnerTag and the OuterTag can be nested.

Hi,

Playing around with 'xsl:apply-templates' and 'xsl:copy' can do the trick  
(there are plenty of other ways too)

<xsl:stylesheet version="1.0"  
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes" />

<xsl:template match="/Object">
	<Root>
		<xsl:apply-templates select="*[1]"/>
	</Root>
</xsl:template>

<xsl:template match="/Object/*">
	<xsl:copy/>
	<xsl:apply-templates select="following-sibling::Object/*[1]"/>
</xsl:template>

<xsl:template match="*">
	<xsl:copy>
		<xsl:apply-templates
select="following-sibling::Object/*[1]"/>
	</xsl:copy>
</xsl:template>

</xsl:stylesheet>


But I do wonder why the wanted output is not like this:
<Root>
	<HeaderTag>
		<OuterTag>
			<InnerTag/>
		</OuterTag>
		<InnerTag/>
		<OuterTag>
			<OuterTag>
				<InnerTag/>
			</OuterTag>
			<InnerTag/>
		</OuterTag>
	</HeaderTag>
</Root>




regards,
-- 
Joris Gillis (http://www.ticalc.org/cgi-bin/acct-view.cgi?userid=38041)
"Et ipsa scientia potestas est"  - Francis Bacon , Meditationes sacrae

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.