[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

RE: Changing Attribute Value in all the ChildNodes at

Subject: RE: Changing Attribute Value in all the ChildNodes at any level down the current node.
From: "Animesh Sharma" <asharma@xxxxxxxxxxxxxxxx>
Date: Fri, 28 May 2004 12:22:26 +0530
childnodes all
Thanks for the suggestion. 

But the problem is I wanted to retain the other part of the original XML. It is something that I want to modify the property (Attribute) of sub tree while not touching the rest of Tree.

Something like:

<xsl:template match="//body/namespace/form/snip/csf/td[position()=1]/table[position()=2]">
	<xsl:copy>
		<xsl:apply-templates select="@*[not(name()='href')]"/>
		<xsl:apply-templates select="*|text()"/>
	</xsl:copy>
</xsl:template>

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

And this thing doesn't works. Don't know why? 
May be Default template might reintroduce the attribute removed by first template. 

Will changing priority of first template would be of any help?

Thanks once again
Animesh


-----Original Message-----
From: Andreas L. Delmelle [mailto:a_l.delmelle@xxxxxxxxxx]
Sent: Thursday, May 27, 2004 9:40 PM
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: RE:  Changing Attribute Value in all the ChildNodes at any
level down the current node.


> -----Original Message-----
> From: Animesh Sharma [mailto:asharma@xxxxxxxxxxxxxxxx]
>

Hi,

> I have to remove a particular attribute (in following example it
> is "href") from all the ChildNodes of the particular node.
>
> I tried to write template something as follows:
>
> <xsl:template
> match="//body/namespace/form/snip/csf/td[position()=1]/table[posit
> ion()=2]">
> 	<xsl:apply-templates select="@*"/>
> 	<xsl:attribute name="href"/>

AFAIK, xsl:attribute is not a self-closing element, so if you really want to
create an empty href attribute, at least there should be
<xsl:attribute name="href"></xsl:attribute>

Although, I'm not sure whether this will work... (haven't needed or tested
anything like it)

If you just want to omit the href attribute from being output, you have two
options:

For both: remove the 'empty' xsl:attribute element you specified above. It
serves no purpose.

1. replace <xsl:apply-templates select="@*" /> by
   <xsl:apply-templates select="@*[not(name()='href')]" />

2. keep the current form of the apply-templates instruction, and define a
null template matching @href, like <xsl:template match="@href" />


Hope this helps!

Greetz,

Andreas

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.