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

RE: xsl:apply-templates doesn't fill variable correctl

Subject: RE: xsl:apply-templates doesn't fill variable correctly
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Mon, 1 Aug 2005 10:17:01 +0100
xsl apply templates variable
I can't see what's wrong here, I suspect the error is in the part of the
stylesheet that you haven't shown us.

One comment on your coding style:

You do this:

>     <xsl:template match="*">
>     	<xsl:when test="name()='fussnote'">

and later this:

>     <xsl:template match="@*">
>		<xsl:when test="name()='href'">

In both cases, this isn't a good way of using template rules. It's much
better to have specific template rules for each kind of element or
attribute, than to have a generic rule which consists of a big xsl:choose
that switches on the element or attribute name.

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

> -----Original Message-----
> From: Lensch, Thomas [mailto:Lensch@xxxxxxxx] 
> Sent: 01 August 2005 09:49
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject:  xsl:apply-templates doesn't fill variable correctly
> 
> Hi,
> 
> the following snipet shows the usage of variable tHtml:
> 
> When i find a 'fussnote' in my xml i apply templates into tHtml. Then,
> this variable is processed further.
> 
> 
>     <xsl:template match="*">
> 	...
> 			<xsl:when test="name()='fussnote'">
> 				<xsl:variable name="tHtml">
> 					<xsl:apply-templates
> select="text()|*"/>
> 				</xsl:variable>
> 				<!-- Pos_1 -->
> 				<xsl:variable name="ttHtml">
> 					<xsl:apply-templates
> select="xalan:nodeset($tHtml)" mode="escape"/>
> 				</xsl:variable>
> 				.... further processing and output of
> $ttHtml
> 			</xsl:when>
> 
>     <!-- Process Attributes -->
>     <xsl:template match="@*">
>         <xsl:choose>
> 			<xsl:when test="name()='href'">
>                 <xsl:choose>
>                     <xsl:when test="starts-with(.,'#')">
>                         <xsl:attribute name="href">
>                             <xsl:call-template name="VerityLink">
>                                 <xsl:with-param name="price"
> select="'0.0'"/>
>                                 <xsl:with-param name="part"
> select="/*/parameter/doc.part"/>
>                             </xsl:call-template>
>                             <xsl:value-of select="."/>
>                         </xsl:attribute>
>                     </xsl:when>
>                     <xsl:otherwise>
> 				....
> 
> 
> 
> Excerpts of my XML file:
> a)
> 	<fussnote nr="13">
>           <a href="#rd_200">Dazu Rn. 200</a>.</fussnote>
> 
> b)
> 	<fussnote nr="71">
>           <a href="#rd_103">Dazu Rn. 103</a>.</fussnote>
> 
> While a) works b) doesn't. In b) only the "." ist output.
> 
> When i use apply-templates without putting the result in a 
> variable, b)
> works too!
> 
> Does anybody have some hints for me? Possible problem of recursion on
> variable content?
> 
> Best regards
> Thomas.

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.