This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
RE: Replacing attribute values [was <spurious title>]
- To: "'xsl-list at mulberrytech dot com'" <xsl-list at mulberrytech dot com>
- Subject: RE: Replacing attribute values [was <spurious title>]
- From: Kay Michael <Michael dot Kay at icl dot com>
- Date: Tue, 18 Jul 2000 13:58:45 +0100
- Reply-To: xsl-list at mulberrytech dot com
> 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