Subject: RE: [xsl] Add attribute to all node From: "Michael Kay" <mhk@xxxxxxxxx> Date: Thu, 29 Apr 2004 14:14:24 +0100 |
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@xxxxxxxxxxxxxxxx] > Sent: 29 April 2004 12:27 > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > 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
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] Add attribute to all node, Animesh Sharma | Thread | Re: [xsl] Add attribute to all node, David Carlisle |
[xsl] looping in xslt, Joeri Belis | Date | RE: [xsl] Create personal functions, Kenny Akridge |
Month |