Re: [xsl] node responding to ancestor node attributes

Subject: Re: [xsl] node responding to ancestor node attributes
From: Jeni Tennison <jeni@xxxxxxxxxxxxxxxx>
Date: Tue, 16 Jul 2002 20:52:19 +0100
Hi Michael,

> In my root node I specifiy the language I'd like output to be in. I
> tried matching a template of page[@language =
> 'es']//content//element[@type = '1'] but that didn't seem to work.

It's hard to work out exactly what's going wrong without seeing more
of your stylesheet, My guess is that you're using the above as a
pattern in the match attribute of an xsl:template, but that for some
reason you either have another template that's catching the 'element'
elements, or the process doesn't get to those 'element' elements at
all. Alternatively, you could be using the above as a path, but in the
wrong context.

> Is there a proper way to check that sort of data? Is it possible to
> take that value and set it to a global variable any node can easily
> check? Thanks.

You could certainly use a global variable to hold the value of the
language attribute on the page document element:

<xsl:variable name="language" select="/page/@language" />

and then check that within a template:

<xsl:template match="element">
  <xsl:choose>
    <xsl:when test="@type = '1' and $language = 'es'">
      ...
    </xsl:when>
    <xsl:otherwise>
      ...
    </xsl:otherwise>
  </xsl:choose>
</xsl:template>

You can't refer to global variables from within the match attribute of
an xsl:template, however, so you have to do the testing inside a
single template rather than having different templates for the
different languages.

Cheers,

Jeni

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


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


Current Thread