Re: [xsl] Stripping empty elements while still conforming to DTD

Subject: Re: [xsl] Stripping empty elements while still conforming to DTD
From: David Carlisle <davidc@xxxxxxxxx>
Date: Wed, 28 Sep 2005 17:16:08 +0100
> Is there a simple way to strip empty elements from an XML while still
> conforming to the requirements of the DTD?  I know how to use the
> string() function to copy only those elements that contain data, but
> this often removes child elements required by the DTD. 

It depends what you mean by simple. XSLT has no access to the
declarations in a DTD (or at least the XSLT programmer has no access via
XSLT) so you have to put the information in "by hand" so it's simple but
tedious if the dtd is big

<xsl:template match="*[not(node())]"/> 
zaps all empty elements, except...

<xsl:template match="wibble/[not(node())]">
<xsl:copy-of select="."/>
</xsl:template>

empty elements that are children of wibble, which are copied.

David


________________________________________________________________________
This e-mail has been scanned for all viruses by Star. The
service is powered by MessageLabs. For more information on a proactive
anti-virus service working around the clock, around the globe, visit:
http://www.star.net.uk
________________________________________________________________________

Current Thread