|
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 |