xsl-list
[Top] [All Lists]

RE: Add attribute to all node

2004-04-29 06:14:24
It should add the attribute to every element, but you're relying on a very
obscure features of the spec. (Which processor are you using? Some are
better than others at implementing obscure features correctly.)

match="//*" matches exactly the same nodes as match="*", but has a higher
default priority than match="*". Therefore your first rule should always be
chosen to match element nodes. But to make things clearer, Change the first
rule to say match="*", and the second to say match="text()|@*".

(And you don't need to apply-templates to the attribute nodes, it's
overkill. Change the <xsl:apply-templates select="@*"/> to <xsl:copy-of
select="@*"/>).

Michael Kay 

-----Original Message-----
From: Animesh Sharma [mailto:asharma(_at_)in(_dot_)firstrain(_dot_)com] 
Sent: 29 April 2004 12:27
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] Add attribute to all node

Hi,

I want to write an XSL which will add the particular 
attribute in all node in the DOM tree.


<xsl:template match="//*">
      <xsl:copy>
              <xsl:apply-templates select="@*"/>
              <xsl:attribute name="test1">Name</xsl:attribute>
              <xsl:apply-templates select="text()|*"/>
      </xsl:copy>
</xsl:template>

<xsl:template match="*|text()|@*">
      <xsl:copy>
              <xsl:apply-templates select="*|text()|@*"/>
      </xsl:copy>
</xsl:template>

It adds the attribute only in root element. Is there way to 
do this stuff recursively?
Thanks in anticipation of your help,

Regards,
Animesh

--+------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--+--





<Prev in Thread] Current Thread [Next in Thread>