Subject: [xsl] Cascading Attributes? From: William Bagby <williamb@xxxxxxxxx> Date: Fri, 25 May 2001 11:50:01 -0400 |
I have an XML element <text> with an optional attribute @class. In the template matching this element, I'd like to have a variable $class which takes one of the following values, with lower number taking precedence: 1. a param called class passed to the template using <with-param> 2. optional attribute @class if it is defined 3. the string "none" In other words, if my XSL is: <xsl:apply-templates select="text"/> I want $class to be text/@class if it is defined, otherwise "none". But if my XSL is: <xsl:variable name="myvar">myclass</xsl:variable> <xsl:apply-templates select="text"> <xsl:with-param name="myvar"/> </xsl:apply-templates> I want $class to be "myclass", regardless of whether or not @class is defined. I tried the following: <xsl:template match="text"> <xsl:param name="class"> <xsl:choose> <xsl:when test="@class"><xsl:value-of select="@class"/></xsl:when> <xsl:otherwise>none</xsl:otherwise> </xsl:choose> </xsl:param> <a href="{@href}" class="{$class}"><xsl:value-of select="."/></a> </xsl:template> But it doesn't work. I'm sure I could probably figure it out, but I'm looking for something elegant, or at least something easy to read. Maybe what I really want to know is why my XSL doesn't work, which is really another way of asking, "How does <xsl:param> work?" William Bagby. XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] RE: Match values from XML-fil, "Sellmer-Brüls, Barb | Thread | Re: [xsl] Cascading Attributes?, Michael Beddow |
[xsl] RE: Match values from XML-fil, "Sellmer-Brüls, Barb | Date | RE: [xsl] position of an element, Sebastian Schirmer |
Month |