Subject: Re: [xsl] Looking for a concise way of specifying an conditional attribute in output From: Andrew Welch <andrew.j.welch@xxxxxxxxx> Date: Thu, 5 May 2011 09:25:51 +0100 |
> <option value="{@value}> > <xsl:value-of select="isSelected(@value,something)"> > other stuff > </option> > > with a reusable function like this > > <xsl:function name="isSelected"> > <xsl:param name="v1"/> > <xsl:param name="v2"/> > <xsl:if test="$v1 eq $v2"><xsl:attribute name="selected" > select="'selected'" /></xsl:if> > </xsl:function> > As has been said you need xsl:sequence or xsl:copy-of to get the whole node not just the value of the node, but you could also make that function a little more generic to create any attribute: <xsl:function name="f:createAtt"> <xsl:param name="name"/> <xsl:param name="value"/> <xsl:attribute name="{$name}" select="$value"/> </xsl:function> and then call it passing the the name value pair for the attribute, and put the condition in a predicate: <foo> <xsl:sequence select="f:createAtt('foo', 'bar')[current()/@value = $something]"/> cheers andrew -- Andrew Welch http://andrewjwelch.com
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Looking for a concise way, Michael Kay | Thread | Re: [xsl] Looking for a concise way, John McGowan |
Re: [xsl] Find node with no child t, Piet van Oostrum | Date | Re: [xsl] Error message saying doc , Wendell Piez |
Month |