Please try the following stylesheet:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>

<xsl:output method="xml" indent="yes" />

<xsl:template match="node() | @*">
 <xsl:copy>
   <xsl:apply-templates select="node() | @*" />
 </xsl:copy>
</xsl:template>

<xsl:template match="*[normalize-space() = '']" />

</xsl:stylesheet>

This works fine with Xalan-J 2.7.0.

The 1st template is an identity template (which copies the whole
source XML to the output). The second template removes specific
elements from the result tree.

On 9/20/06, Satrac <[EMAIL PROTECTED]> wrote:

Hi all!

I have a trouble with xslt transform. I have some xml like:


<message>
 <header>
    <elem1>elem1</elem1>
    <elem2/>
 </header>
 <body>
    <belem1>
       <subelem1>sub1</subelem1>
       <subelem2/>
    </belem1>
    <belem2>
       <subelem1/>
       <subelem2/>
    </belem2>
 </body>
</message>

I want to kill all empty nodes and transform it to document like:

<message>
 <header>
    <elem1>elem1</elem1>
 </header>
 <body>
    <belem1>
       <subelem1>sub1</subelem1>
    </belem1>
 </body>
</message>

I have maked xsl.

<?xml version="1.0" encoding="windows-1251" ?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; >
 <xsl:template match="*[count(.//*[text()!=''])!=0 or text()!='']">
  <xsl:element name="{name()}">
  <xsl:copy-of select="@*" />
   <xsl:apply-templates />
  </xsl:element>
 </xsl:template>
</xsl:stylesheet>

In other xslt processors its works perfect, but not in Xalan. I can't use
another processor.
Can somebody help me?


--
Regards,
Mukul Gandhi

http://gandhimukul.tripod.com

Reply via email to