Re: [xsl] How can place data INSIDE an attribute?

Subject: Re: [xsl] How can place data INSIDE an attribute?
From: Jeni Tennison <mail@xxxxxxxxxxxxxxxx>
Date: Thu, 23 Aug 2001 12:38:49 +0100
Hi Phil,

> I am doing an XML -> XML transformation below is how I would like
> the output to look, I know how to get the value '24' in the correct
> place. My problem is putting the value 'eng' in the attribute (if
> that's the correct technical term for it).

Attribute is the right term. The path for the 'eng' value is similar
to the one for '24':

  /table/row/column[@name = 'Language']

[You have a '/.' at the end of the path that you're using, which you
shouldn't have.]

You can set the value of an attribute using an attribute value
template, in which expressions inside {}s are evaluated and inserted
into the attribute value, as follows:

<xsl:template match="/">
  <Product language="{/table/row/column[@name = 'Language']}">
    <xsl:apply-templates
        select="/table/row/column[@name = 'ProductID']" />
  </Product>
</xsl:template>

Alternatively, you could use an xsl:attribute as follows:

<xsl:template match="/">
  <Product>
    <xsl:attribute name="language">
      <xsl:apply-templates
          select="/table/row/column[@name = 'Language']" />
    </xsl:attribute>
    <xsl:apply-templates
        select="/table/row/column[@name = 'ProductID']" />
  </Product>
</xsl:template>

This allows you to apply templates to the column to get its value, if
that's important to you.

I hope that helps,

Jeni

---
Jeni Tennison
http://www.jenitennison.com/


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


Current Thread