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 |