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
|