Subject: [xsl] 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 |
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: [xsl] 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 |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] is recursion the best way, Joris Gillis | Thread | [xsl] Determine the position of an , Ross, Douglas |
Re: [xsl] Chewy key problem, David Carlisle | Date | RE: [xsl] Chewy key problem, Edmund Mitchell |
Month |