Re: [xsl] change a list of attribute name

Subject: Re: [xsl] change a list of attribute name
From: "Alexander Gutman" <gutman@xxxxxxxxxxxxxxx>
Date: Fri, 3 Aug 2001 09:53:46 +0700
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


Current Thread