|
Subject: [xsl] XSLT - update attribute with new value From: Ann Marie Rubin <Annmarie.Rubin@xxxxxxx> Date: Wed, 10 Nov 2004 17:32:49 -0500 |
Many thanks to everyone who offered help with my stylesheet. Everyone's
suggestions worked when using a hardcoded value for the attribute name.
But I need to use parameters.
this is what I've tried so far. Is there another way?
thanks,
Ann Marie
<xsl:param name="attr">ROSE</xsl:param>
<xsl:param name="value">RED</xsl:param>
<xsl:param name="node">orion-web-app</xsl:param>
<xsl:template match="orion-web-app">
<!-- adds attr to orion-web-app node correctly but won't
take vars for attr or match="$node" -->
<xsl:copy>
<xsl:if test="not(//@ROSE)">
<xsl:attribute name="ROSE"><xsl:value-of
select="$value"/></xsl:attribute>
<xsl:apply-templates select="@*|node()"/>
</xsl:if>
</xsl:copy>
</xsl:template>
If i include the attr test in this template:
<xsl:template match="@*" priority="10">
<!-- adds attr to each node in the tree
it should only be added to the specified node
and vars are not allowed where ROSE is used -->
<xsl:if test="not(//@ROSE)">
<xsl:attribute name="ROSE"><xsl:value-of
select="$value"/></xsl:attribute>
</xsl:if>-->
to get around the restriction on where attribute names can be used, I
tried this:
<xsl:template match="@*" priority="10">
<!--replaces every attr in the result tree w/ RED
recoverable error: Cannot write an attribute node when no
element start tag is open-->
<xsl:choose>
<xsl:when test="not(//@*=$attr)"><xsl:value-of
select="$value"/></xsl:when>
<xsl:otherwise><xsl:value-of select="."/></xsl:otherwise>
</xsl:choose>
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| RE: [xsl] XSLT - update attribute w, Jarno.Elovirta | Thread | Re: [xsl] XSLT - update attribute w, M. David Peterson |
| Re: [xsl] variable question, Wendell Piez | Date | RE: [xsl] Performance Tuning, Bhupendra Singh |
| Month |