RE: [xsl] Can't save a node tree in a variable.

Subject: RE: [xsl] Can't save a node tree in a variable.
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Mon, 25 Jul 2005 16:18:53 +0100
It's just as well it doesn't, because it would loop indefinitely if this
rule were invoked, since $sorted is a document node and therefore matches
match="/".

I don't think you have understood modes. A template rule with mode="X" will
only be invoked by an apply-templates instruction with mode="X". Your rule
has mode="main", but there's no external apply-templates call with
mode="main".

Michael Kay
http://www.saxonica.com/

> -----Original Message-----
> From: John Robb [mailto:john_ok@xxxxxx]
> Sent: 25 July 2005 15:22
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: Re: [xsl] Can't save a node tree in a variable.
>
> And can you say me why in the following xsl the processor
> doesn't step
> into this template:
> <xsl:template match="/" mode="main">
>    <xsl:apply-templates select="$sorted" mode="main"/>
> </xsl:template>
>
> The hole xsl:
> <?xml version="1.0"?>
> <xsl:stylesheet version="1.0"
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
>   xmlns:msxsl="urn:schemas-microsoft-com:xslt">
> 	<xsl:output media-type="xml"/>
> 	<xsl:variable name="sorted">
> 		<xsl:apply-templates mode="copy" select="data/item"/>
> 	</xsl:variable>
> 	<xsl:template match="@*|node()">
> 		<xsl:copy>
> 			<xsl:apply-templates select="@*|node()">
> 				<xsl:sort select="@sector"/>
> 				<xsl:sort select="@subsector"/>
> 			</xsl:apply-templates>
> 		</xsl:copy>
> 	</xsl:template>
> 	<xsl:template match="/" mode="main">
> 		<xsl:apply-templates select="$sorted" mode="main"/>
> 	</xsl:template>
> 	<xsl:template match="item" mode="main">
> 		<xsl:for-each select="item">
> 			<xsl:value-of select="."/>
> 		</xsl:for-each>
> 	</xsl:template>
> </xsl:stylesheet>
>
> Mon, 25 Jul 2005 16:18:45 +0200, Geert Josten
> <Geert.Josten@xxxxxxxxxxx> PISAL(A):
>
> > You will need to use a node-set extension function in XSLT 1.0...
> >
> > Cheers,
> > Geert
> >
> > John Robb wrote:
> >
> >> Can you please help me?I want to save the sorted tree in a
> variable.
> >> Whats wrong with the following xsl:
> >> <xsl:variable name="sorted">
> >>         <xsl:apply-templates mode="copy" select="data/item"/>
> >>     </xsl:variable>
> >>     <xsl:template match="@*|node()">
> >>         <xsl:copy>
> >>             <xsl:apply-templates select="@*|node()" mode="copy">
> >>                 <xsl:sort select="@sector"/>
> >>                 <xsl:sort select="@subsector"/>
> >>             </xsl:apply-templates>
> >>         </xsl:copy>
> >>     </xsl:template>
> >>
> >> And then I want to perform smth. like this:$sorted/item/@sector.
> >> How is it possible to realize such a thing?
> >>     ---
> >> GSM.By.COM - INTERNET-MAGAZIN SOTOWYH TELEFONOW STANDARTA GSM,
> >> AKSESSUAROW I ZAP^ASTEJ K NIM. {IROKIJ WYBOR, RAZUMNYE CENY,
> >> OPERATIWNAQ DOSTAWKA. rEMONT TELEFONOW. http://www.gsm.by.com
> >>
> >>
> >
> > --
> > Geert.Josten@xxxxxxxxxxx
> > IT-consultant at Daidalos BV, Bleiswijk (NL)
> >
> > http://www.daidalos.nl/
> > tel:+31-(0)10-850 12 00
> > fax:+31-(0)10-850 11 99
> >
> > GPG: 1024D/12DEBB50
> >
>
>
>
> ---
> GSM.By.COM - INTERNET-MAGAZIN SOTOWYH TELEFONOW STANDARTA GSM,
> AKSESSUAROW I ZAP^ASTEJ K NIM. {IROKIJ WYBOR, RAZUMNYE CENY,
> OPERATIWNAQ DOSTAWKA. rEMONT TELEFONOW. http://www.gsm.by.com

Current Thread