|
Subject: Re: [xsl] Change text on given node at runtime From: Mukul Gandhi <mukulw3@xxxxxxxxx> Date: Thu, 24 Jul 2003 05:13:57 -0700 (PDT) |
Hi David,
Thanks for the explanation. Your solution is much
simpler.
Regards,
Mukul
--- David Carlisle <davidc@xxxxxxxxx> wrote:
>
>
> Since you are using Xalan-J, i have used a Xalan
> extension function nodeset which helps me
> enumerate
> over the attributes.
>
> You didn't need it there
>
> <xsl:for-each select="xalan:nodeset(@*)">
>
> @* returns a node set so you could just have gone
>
> <xsl:for-each select="@*">
>
> (since the input to xx:node-set() is supposed to be
> a
> result-tree-fragment, I think some engines would
> actually error
> if you pass in a node set.)
>
> <xsl:for-each select="xalan:nodeset(@*)">
> <xsl:variable name="attName" select="name(.)"/>
> <xsl:attribute name="{$attName}"><xsl:value-of
> select="."/></xsl:attribute>
> </xsl:for-each>
>
> since you are not changing the name or the value
> that whole loop could
> could be
>
> <xsl:copy-of select="@*/>
>
> In both branches of your template you are copying
> the element and all
> its attributes, the only difference is whether to
> apply templates or to
> insert the text param, so you can simplify by moving
> the element and
> attribute handling to the shared part, ie:
>
> <xsl:template match="@* | node()">
> <xsl:if test="(name(.) = $tag)">
> <xsl:element name="{$tag}">
> <xsl:for-each select="xalan:nodeset(@*)">
> <xsl:variable name="attName" select="name(.)"/>
> <xsl:attribute name="{$attName}"><xsl:value-of
> select="."/></xsl:attribute>
> </xsl:for-each>
> <xsl:value-of select="$text"/>
> </xsl:element>
> </xsl:if>
>
> <xsl:if test="not(name(.) = $tag)">
> <xsl:copy>
> <xsl:apply-templates select="@* | node()"/>
> </xsl:copy>
> </xsl:if>
> </xsl:template>
>
>
> can be simplified to:
>
>
> <xsl:template match="*">
> <xsl:copy>
> <xsl:copy-of select="@*/>
> <xsl:choose>
> <xsl:when test="name()=$tag"><xsl:value-of
> select="$text"/></xsl:when>
>
>
<xsl:otherwise><xsl:apply-templates/></xsl:otherwise>
> </xsl:choose>
> </xsl:copy>
> </xsl:template>
>
> David
>
>
________________________________________________________________________
> This e-mail has been scanned for all viruses by Star
> Internet. The
> service is powered by MessageLabs. For more
> information on a proactive
> anti-virus service working around the clock, around
> the globe, visit:
> http://www.star.net.uk
>
________________________________________________________________________
>
> XSL-List info and archive:
> http://www.mulberrytech.com/xsl/xsl-list
>
__________________________________
Do you Yahoo!?
Yahoo! SiteBuilder - Free, easy-to-use web site design software
http://sitebuilder.yahoo.com
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Re: [xsl] Change text on given node, David Carlisle | Thread | RE: [xsl] Change text on given node, jeff . day |
| Re: [xsl] Change text on given node, David Carlisle | Date | RE: [xsl] Change text on given node, jeff . day |
| Month |