Re: [xsl] [XSLT 1.0] Q: recursively eliminate empty nodes

Subject: Re: [xsl] [XSLT 1.0] Q: recursively eliminate empty nodes
From: "G. Ken Holman" <gkholman@xxxxxxxxxxxxxxxxxxxx>
Date: Mon, 08 Nov 2010 14:28:32 -0500
At 2010-11-08 20:15 +0100, Hermann Stamm-Wilbrandt wrote:
on the input file x.xml I posted your solutions produce the same output.

As Ken asked for more inputs I tried adding a comment and then
the output of your solutions and the recursive solution differ:

Of course they would differ ... you haven't described the requirements and we volunteers are just guessing.


$ cat d.xml
<a><b>c<c/></b><b><c/><!--test--></b></a>
$
$ xsltproc d1.xsl d.xml
<?xml version="1.0" encoding="UTF-8"?>
<a><b>c</b></a>
$
$ xsltproc d2.xsl d.xml
<?xml version="1.0" encoding="UTF-8"?>
<a><b>c</b></a>
$
$ xsltproc y.xsl d.xml
<?xml version="1.0"?>
<a><b>c</b><b><!--test--></b></a>
$

I have to ask the originator of the problem for the exact requirements.

Good ... it will stop the guessing.


For now the XSLT 1.0 solution below will check for empty elements with your new stipulation.

I hope this helps.

. . . . . . Ken

~/t/ftemp $ cat hermann2.xml
<a><b>c<c/></b><b><c/><!--test--></b></a>
~/t/ftemp $ xslt hermann2.xml hermann.xsl
<?xml version="1.0" encoding="utf-8"?><a><b>c</b><b><!--test--></b></a>~/t/ftemp $ cat hermann.xsl
<?xml version="1.0" encoding="US-ASCII"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
version="1.0">


<xsl:template match="*[not(.//text() | .//comment() |
                           .//processing-instruction())]"/>

<xsl:template match="@*|node()"><!--identity for all other nodes-->
  <xsl:copy>
    <xsl:apply-templates select="@*|node()"/>
  </xsl:copy>
</xsl:template>

</xsl:stylesheet>
~/t/ftemp $


-- Contact us for world-wide XML consulting & instructor-led training Crane Softwrights Ltd. http://www.CraneSoftwrights.com/s/ G. Ken Holman mailto:gkholman@xxxxxxxxxxxxxxxxxxxx Legal business disclaimers: http://www.CraneSoftwrights.com/legal

Current Thread