RE: [xsl] suppressing default template rules

Subject: RE: [xsl] suppressing default template rules
From: Jarno.Elovirta@xxxxxxxxx
Date: Tue, 26 Mar 2002 14:24:56 +0200
Hi,

> Please find below the xml and xsl files i am working
> on. What i am trying to do is print the  firstname and
> secondname when the employee element is encountered.
> But now i am getting two sets of values printed. I
> assume that the second set is due to the
> built(default) in template rule for matching all
> text() nodes. If so what could be the way out.
> 
> 
> <?xml version="1.0" ?>
> <custdet>
> <employee>
> </employee>
> 	<firstname>first</firstname>
> 	<lastname>last</lastname>
> </custdet>
> 
> 
> <?xml version="1.0"?> 
> <xsl:stylesheet
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
> version="1.0">
> 
> <xsl:template match="firstname">
> <b>
> <xsl:value-of select="."/>
> </b>
> </xsl:template>
> 
> <xsl:template match="lastname">
> <i><b>
> <xsl:value-of select="."/>
> </b></i>
> </xsl:template>
> 
> <xsl:template match="employee">
> <xsl:apply-templates select="//firstname"/>
> <xsl:apply-templates select="//lastname"/>
> </xsl:template>

add

<xsl:template match="custdet">
  <xsl:apply-templates select="employee" />
</xsl:template>

And perhaps it would be wise if you re-evaluated the source document schema to make it a bit more hierarchical. Also, the template for employee is quite inefficient, 

<xsl:template match="employee">
<xsl:apply-templates select="../firstname"/>
<xsl:apply-templates select="../lastname"/>
</xsl:template>

would probably be a better solution.

Santtu

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


Current Thread