Re: [xsl] Determining the type of attribute within the matching template

Subject: Re: [xsl] Determining the type of attribute within the matching template
From: Jeni Tennison <jeni@xxxxxxxxxxxxxxxx>
Date: Sun, 9 Feb 2003 10:03:25 +0000
Hi James,

>> In the case above, I think you'd be a lot better off splitting the
>> <xsl:choose> into multiple templates:
>
> The reason that I didn't want to do this is that there is a lot of
> common code before the node-specific code, which I snipped in the
> example I gave. I have moved this into a separate named template
> which is called from each node-specific template, but it would have
> been more aesthetic if I could have used an inline "choose"
> construct.

Have another look at the solution that I suggested:

<xsl:template match="*|@*">
  ...
  <xsl:apply-templates select="." mode="content" />
  ...
</xsl:template>

In this first template, the ...s before and after the
<xsl:apply-templates> are placeholders for common code that you want
to use for all the different element and attribute types. The template
is saying, "the output for elements and attributes is always this
common header/footer, with the main content being determined by
processing the element/attribute in 'content' mode."

The 'content' mode templates do the element/attribute-specific
processing:

<!-- resource types -->
<xsl:template match="@rdf:resource" mode="content">
  ...
</xsl:template>

<!-- datatypes -->
<xsl:template match="@rdf:datatype" mode="content">
  ...
</xsl:template>

while the default mode template does the general processing.

Modes are your friends.

Cheers,

Jeni

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


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


Current Thread