Subject: RE: Setting name attribute of <xsl:attribute>
From: "Michael Kay" <mhk@xxxxxxxxx>
Date: Fri, 10 Oct 2003 14:26:05 +0100
|
Perhaps you are calling your template with, say
<xsl:with-param name="attributeName" select="code"/>
rather than
<xsl:with-param name="attributeName" select="'code'"/>
I would think that a better solution is to pass the attribute node as a
parameter, rather than passing its name and value. Your template then
becomes:
<xsl:template name="copy-att"
<xsl:param name="attNode"/>
<xsl:if test="string(.)">
<xsl:copy/>
</xsl:if>
</xsl:template>
and the calling code becomes, for example
<xsl:call-template name="copy-att">
<xsl:with-param name="attNode" select="@code"/>
</
Michael Kay
> -----Original Message-----
> From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> [mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of
> Witham, Darren (Contractor)
> Sent: 10 October 2003 12:50
> To: XSL-List@xxxxxxxxxxxxxxxxxxxxxx
> Subject: Setting name attribute of <xsl:attribute>
>
>
>
> Hi,
>
> I have what I hope is an easy issue to solve but my varying
> attempts to do so have not been successful. I have an xsl
> stylesheet which transforms some xml into another xml format.
> I only wish to generate XML in the output xml file if
> attributes in the src xml exist. At present I have a number
> of <xsl:if test......> directives to check if an attribute is
> present before processing.
> I would like to remove the need for the <xsl:if test......>
> and want to call a template to do the check and process if
> need be.....
>
> My template is
>
> <!--
> Helper template that only pushes out out XML if value
> of attribute to publish is not null
> -->
> <xsl:template name="checkAttributeNotNull">
> <xsl:param name="attributeName"/>
> <xsl:param name="attributeValue"/>
> <xsl:if test="$attributeValue">
> <xsl:attribute name="{$attributeName}">
> <xsl:value-of select="$attributeValue" />
> </xsl:attribute>
> </xsl:if>
> </xsl:template>
>
> And I call if via :
>
>
> <xsl:call-template name="checkAttributeNotNull">
> <xsl:with-param name="attributeName" select="anAttName"/>
> <xsl:with-param name="attributeValue"
> select="anAttValue"/> </xsl:call-template>
>
> The problem I have is within the template I call. I cannot
> seem to set the name of the attribute I am trying to create
> with the parameter 'attributeName'. ( i.e with <xsl:attribute
> name="{$attributeName}">) I have tried all sorts of
> combinations except for the correct one. I thought I could
> set this value at runtime ?????
>
> Any pointers appreciated.
>
> Thx
>
>
>
>
>
> XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
>
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
|