Altova Mailing List Archives

RE: [xsl] default attribute values?

From: "Hunsberger, Peter" <Peter.Hunsberger@---------->
Date: 8/2/2002 8:11:00 AM
>I'm afraid not, in that case you'll have to use an xsl:if or xsl:choose
>        <input>
>          <xsl:attribute name="name">
>            <xsl:choose>
>              <xsl:when test="@gunk"><xsl:value-of
>              <xsl:otherwise>default</xsl:default>
>            </xsl:choose>
>          </xsl:attribute>
>          <xsl:if test="@foo">
>             <xsl:attribute name="bar"><xsl:value-of
>          </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.

Wendell, that's a bit obscure (thus, I like it), but it probably makes sense
where you're doing a lot of attribute manipulation. In particular, if you
changed the name of a certain set of attributes on multiple different
elements.  The choose block certainly makes it more obvious what's going on
and I'd guess it's likely is more efficient for the case where you're only
flipping the name on a single attribute for a single element...?

 XSL-List info and archive:


These Archives are provided for informational purposes only and have been generated directly from the Altova mailing list archive system and are comprised of the lists set forth on Therefore, Altova does not warrant or guarantee the accuracy, reliability, completeness, usefulness, non-infringement of intellectual property rights, or quality of any content on the Altova Mailing List Archive(s), regardless of who originates that content. You expressly understand and agree that you bear all risks associated with using or relying on that content. Altova will not be liable or responsible in any way for any content posted including, but not limited to, any errors or omissions in content, or for any losses or damage of any kind incurred as a result of the use of or reliance on any content. This disclaimer and limitation on liability is in addition to the disclaimers and limitations contained in the Website Terms of Use and elsewhere on the site.