RE: Replacing attribute values [was <spurious title>]

Subject: RE: Replacing attribute values [was <spurious title>]
From: Kay Michael <Michael.Kay@xxxxxxx>
Date: Tue, 18 Jul 2000 13:58:45 +0100
> I have element with some attributes and with attribute values
> (in my source), example:
> 
> <sem role="error">
> <sem role="user">
> ...
> 
> and i want to change attribute name and value of attribute to 
> something else. Example:
> 
> (<sem role="error"> --> <sem type="state">

A good solution here is to use template rules:

<xsl:template match="sem/@role[.='error']">
<xsl:attribute name="type">state</xsl:attribute>
</xsl:template>

<xsl:template match="sem/@role[.='user']">
<xsl:attribute name="type">parameter</xsl:attribute>
</xsl:template>

<xsl:template match="sem">
   <xsl:apply-templates select="@*/>
</xsl:template>

> 
> This is what I have tried:
> 
> <xsl:template match="sem"> 
...
> 			<xsl:if test="sem[@role='user']">state</xsl:if>     
>

This is starting to emerge as one of the most popular mistakes! the current
node is a <sem> element, so the test is looking for its <sem> children, and
doesn't find any. You need

<xsl:if test="@role='user'">

Mike Kay 


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


Current Thread