Hi Syd,
are you sure that the (your) line should look like
<xsl:template match="*[normalize-space( concat(.,@*) )='']"/>
and not like
<xsl:template match="@*[normalize-space( concat(.,@*) )='']"/>
Mind the @
Ben
On Thu, 3 Dec 2009 08:50:06 -0500, Syd Bauman wrote:
Ah, guess I was answering a slightly different question. If you are
trying to kill any element that has either no child nodes at all, or
has only child attribute nodes that are empty, perhaps
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output indent="yes"/>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="*[normalize-space( concat(.,@*) )='']"/>
</xsl:stylesheet>
will do the trick.
The first part is a typical identity transform. The last template
there matches any element whose content & attribute values combined
consist of nothing other than whitespace.
There may be better ways to do this, but I think it does what you
want.
The problem with this is that only elements OR attributes are
stripped but not both at the same time.
Assume the following XML source:
<ns11:elem1 myattr="">
<ns22:subelem2 />
<ns22:subelem3></ns22:subelem3>
</ns11:elem1>
Then applying the XSLT script below will result in
<ns11:elem1>
</ns11:elem1>
As you can see the ns11:elem1 persists.
It is handled only in the remove attribute template and does not
match the other remove-empty-element template.
So how can I iteratively/recursively re-apply the script/templates
on the result again?
XSLT script:
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output indent="yes"/>
<xsl:template match="@*[normalize-space(.)='']"/>
<xsl:template match="*[not(node())]"/>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
--~------------------------------------------------------------------
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>
--~--
--~------------------------------------------------------------------
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>
--~--