Re: [xsl] Multiple attributes present and non-present

Subject: Re: [xsl] Multiple attributes present and non-present
From: David Carlisle <davidc@xxxxxxxxx>
Date: Mon, 4 Mar 2002 18:48:34 GMT
> Should I use a different method?

xsl:copy-of select="@*" is the standard way of copying all
attributes.

However You can simplify

<xsl:template match="PERSNAME">
<xsl:element name="PERSNAME">

to either

<xsl:template match="PERSNAME">
<xsl:copy>

or
<xsl:template match="PERSNAME">
<PERSNAME>

and you can simplify

<xsl:copy-of select="@*"/>
<xsl:copy-of select="node()"/>

to

<xsl:copy-of select="@*|node()"/>

actually if that was exactly what you wanted, you are just copying an
entire element, so you could further simplify to


<xsl:template match="PERSNAME">
<xsl:copy-of select="."/>
</xsl:template>


Or, since that is the only template, your stylesheet becomes

<HEY xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; xsl:version="1.0">
<xsl:copy-of select="//PERSNAME"/>
</HEY>

however that's probably an over simplification in your real eaxmple,
so going back to the PERSNAME template it seems you don't want everything

  Also it would be nice not to have the empty attributes 

so

<xsl:template match="PERSNAME">
<xsl:copy-of select="@*[not(.='')]|node()"/>
</xsl:template>

David

_____________________________________________________________________
This message has been checked for all known viruses by Star Internet
delivered through the MessageLabs Virus Scanning Service. For further
information visit http://www.star.net.uk/stats.asp or alternatively call
Star Internet for details on the Virus Scanning Service.

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


Current Thread