This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: change a list of attribute name
- To: xsl-list at lists dot mulberrytech dot com
- Subject: Re: [xsl] change a list of attribute name
- From: "Alexander Gutman" <gutman at novosoft-us dot com>
- Date: Fri, 3 Aug 2001 09:53:46 +0700
- Reply-To: xsl-list at lists dot mulberrytech dot com
Hello.
Xiaocun Xu wrote:
> I have a header which consisted of normal names such
> as "Last Name". For each of these, I would like to
> replace it with a valid XML attribute name such as
> LastName. What would be the best way to do it?
You may define a recursive template like this:
<xsl:template name="DelSpaces">
<xsl:param name="source"/>
<xsl:choose>
<xsl:when test="not(contains($source,' '))">
<xsl:value-of select="$source"/>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="DelSpaces">
<xsl:with-param name="source"
select="concat(substring-before($source,' '),
substring-after($source,' '))"/>
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
and use it in the following way:
<xsl:variable name="attrName">
<xsl:call-template name="DelSpaces">
<xsl:with-param name="source" select="..."/>
</xsl:call-template>
</xsl:variable>
<xsl:attribute name="{$attrName}">...</xsl:attribute>
But you should make sure that the value substituted for "source"
does not contain (non-space) characters that are not allowed
in attribute names.
--
Alexander E. Gutman
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list