This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

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


> 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

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]