Re: Problems displaying xsl:value-of within quotes

Subject: Re: Problems displaying xsl:value-of within quotes
From: Jeni Tennison <Jeni.Tennison@xxxxxxxxxxxxxxxx>
Date: Fri, 16 Jun 2000 15:01:53 +0100
David,

>I have written the following XSLT to display a list of checkboxes
>
><xsl:for-each select="data">
>
><TD><INPUT TYPE="CHECKBOX" NAME="item1"><xsl:value-of 
>select="@label"/></INPUT></TD>
>
></xsl:for-each>
>
>which is fine, but I want to change the NAME="item1" to NAME="<xsl:value-of 
>select="@name"/>" but this does not work.

There are two ways to do what you want to do, one of which is a shortening
of the other.  The essential thing you have to realise is that you're
constructing an element tree, not putting together strings to give an HTML
file.  To rephrase your question with this in mind: what you want to do is
create an 'INPUT' element whose 'NAME' attribute is equal to the value of
the 'name' attribute of the current node (the 'data' element).

The first way, which is longer but a bit more flexible, is to use
xsl:attribute, which lets you specify the value of an attribute on a result
element in any way you want within its content:

<xsl:for-each select="data">
  <TD>
    <INPUT TYPE="CHECKBOX">
      <xsl:attribute name="NAME">
        <xsl:value-of select="@name" />
      </xsl:attribute>
      <xsl:value-of select="@label" />
    </INPUT>
  </TD>
</xsl:for-each>

The second way, which is shorter, but less flexible, is to use an
'attribute-value-template'.  Basically, if you place an XPath (like @name)
within {}s in an attribute value, then the XPath is evaluated to give the
value for the attribute:

<xsl:for-each select="data">
  <TD>
    <INPUT TYPE="CHECKBOX" NAME="{@name}">
      <xsl:value-of select="@label" />
    </INPUT>
  </TD>
</xsl:for-each>

I hope that helps,

Jeni

Dr Jeni Tennison
Epistemics Ltd, Strelley Hall, Nottingham, NG8 6PE
Telephone 0115 9061301 ? Fax 0115 9061304 ? Email
jeni.tennison@xxxxxxxxxxxxxxxx



 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread