Altova Mailing List Archives>Archive Index >comp.text.xml Archive Home >Recent entries >Thread Prev - Multiple Valued Variables in XSLT [Thread Next] Re: Multiple Valued Variables in XSLTTo: NULL Date: 7/2/2004 6:13:00 PM John Kooistra wrote:
> Hi,
>
> I'm trying to set the font colour and background colour in HTML based
> on an XSL condition a la:
>
> <xsl:variable name="font">
> <xsl:choose>
> <xsl:when test="SOME TEST">
> <fontcolour>Red</fontcolour>
> <bgcolour>Blue</bgcolour>
> </xsl:when>
> <xsl:otherwise>
> <fontcolour>Black</fontcolour>
> <bgcolour>White</bgcolour>
> </xsl:otherwise>
> </xsl:choose>
> </xsl:variable>
> <td bgcolor="{$font/bgcolour}">
> <font color="{$font/fontcolour}">
> TEXT
> </font>
> </td>
>
> However, I get the error: "Reference to variable or parameter 'font'
> must evaluate to a node list."
>
> I get it because $font is a Result Tree Fragment.
>
> Is there a way to get the functionality I want without using a
> processor dependent function like msxsl:node-set(rtf)?
>
> As a work-around, I'm currently using two separate variables for
> fontcolour and bgcolour complete with their own condition statements.
> Obviously, it is very ugly and I would really appreciate any
> suggestions you have.
>
> Thanks a million,
> John
hi,
you don't need any extension, just use the right way :
when one need an xml-structured variable, just put it as a child of the
root element of your stylesheet, and refers to it by using document('')
the sole constraint is to define a namespace for all your structured
constants :
<xsl:stylesheet xmlns:const="*** My datas ***"
xmlns:xsl="...as usual">
<const:fonts>
<font>
<fontcolour>Red</fontcolour>
<bgcolour>Blue</bgcolour>
</font>
<font>
<fontcolour>Black</fontcolour>
<bgcolour>White</bgcolour>
</font>
</const:fonts>
<xsl:template ...>
<xsl:variable name="fontNumber">
<xsl:choose>
<xsl:when test="SOME TEST">1</xsl:when>
<xsl:otherwise>2</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="font"
select="document('')/*/const:fonts/font[number($fontNumber)]">
<td bgcolor="{$font/bgcolour}">
<font color="{$font/fontcolour}">
TEXT
</font>
</td>
</xsl:template>
</xsl:stylesheet>
--
Cordialement,
///
(. .)
-----ooO--(_)--Ooo-----
| Philippe Poulard |
-----------------------
| ||||||
| Company | Legal | Press | Partners | Careers | Sitemap | Contact Us | Altova Blog | Mobile | Full Site | |||
|
