xsl-list
[Top] [All Lists]

RE: Changing Attribute Value in all the ChildNodes at any level down the current node.

2004-05-27 09:09:34
-----Original Message-----
From: Animesh Sharma [mailto:asharma(_at_)in(_dot_)firstrain(_dot_)com]


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