This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

RE: default attribute values?


(Michael McGlothlin)

Sorry to pick up a thread so old, I feel like the kid running through the snow after the dog sled has left....

At 04:19 PM 7/12/2002, Peter wrote:
> Seemed to work well except in a couple cases where I rename the attribute.
> Any way to change the name when I copy?

I'm afraid not, in that case you'll have to use an xsl:if or xsl:choose
block:

       <input>
         <xsl:attribute name="name">
           <xsl:choose>
             <xsl:when test="@gunk"><xsl:value-of
select="@gunk"/></xsl:when>
             <xsl:otherwise>default</xsl:default>
           </xsl:choose>
         </xsl:attribute>
         <xsl:if test="@foo">
            <xsl:attribute name="bar"><xsl:value-of
select="@foo"/></xsl:attribute>
         </xsl:if>
      </input>
This could actually be done a bit more elegantly, following the pattern Peter described earlier, as so:

<input name="default">
<xsl:apply-templates select="@gunk"/>
</input>

<xsl:template match="@gunk">
<xsl:attribute name="name">
<xsl:value-of select="."/>
</xsl:attribute>
</xsl:template>

In fact if you used templates instead of the copy-of, you could generalize this for all the attributes:

<input name="default" name2="default2">
<xsl:apply-templates select="@*"/>
</input>

<xsl:template match="node/@*">
<xsl:copy-of select="."/>
</xsl:template>

<xsl:template match="@gunk" priority="1">
<xsl:attribute name="name">
<xsl:value-of select="."/>
</xsl:attribute>
</xsl:template>

Note that on the template for the attribute whose name is changing (@gunk to @name), an explicit priority is necessary to make sure that template fires instead of the template that copies.

Cheers,
Wendell


======================================================================
Wendell Piez mailto:wapiez@mulberrytech.com
Mulberry Technologies, Inc. http://www.mulberrytech.com
17 West Jefferson Street Direct Phone: 301/315-9635
Suite 207 Phone: 301/315-9631
Rockville, MD 20850 Fax: 301/315-8285
----------------------------------------------------------------------
Mulberry Technologies: A Consultancy Specializing in SGML and XML
======================================================================


XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]