xsl-list
[Top] [All Lists]

RE: Empty nodes AND attributes stripping - I'm so lost - SOLUTION

2004-09-02 10:25:34

Firstly, thanks for all the help.

I'm including my solution here so others might benefit.

<?xml version="1.0" encoding="UTF-16"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; version="1.0">
<xsl:output method="xml" />
<xsl:strip-space elements="*"/>

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

        <xsl:template match="@*[.='']"/>
        <xsl:template match="//parent/myContent/*[.='' and not(attribute::*)]"/>

</xsl:stylesheet>


Cheers

Bryan


From: "Michael Kay" <mhk(_at_)mhk(_dot_)me(_dot_)uk>
Reply-To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
To: <xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com>
Subject: RE: [xsl] Empty nodes AND attributes stripping - I'm so lost
Date: Thu, 2 Sep 2004 17:21:43 +0100

Except that you also appear to define an element as being empty if all its
children are empty, unless it is a myContent element. But David has given
you the principle: once you sort out what the rules are, writing them in
XSLT isn't difficult.

You can match an element that is empty in the sense above with

match="*[not(.//text())]"

provided you have used

<xsl:strip-space elements="*"/>

to remove the whitespace text nodes.

Michael Kay

> -----Original Message-----
> From: David Carlisle [mailto:davidc(_at_)nag(_dot_)co(_dot_)uk]
> Sent: 02 September 2004 16:52
> To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
> Subject: Re: [xsl] Empty nodes AND attributes stripping - I'm so lost
>
>
> just copy the identity transform from the xslt spec:
>
>
> <xsl:template match="@*|node()">
> <xsl:copy>
> <xsl:apply-templates select="@*|node()"/>
> </xsl:copy>
> </xsl:template>
>
> then add a template to zap empty attributes:
>
> <xsl:template match="@*[.='']"/>
>
> and a template to zap empty elements
>
>
> <xsl:template match="*[not(node())]"/>
>
> David
>
>
> ______________________________________________________________
> __________
> This e-mail has been scanned for all viruses by Star Internet. 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
> ______________________________________________________________
> __________
>
> --+------------------------------------------------------------------
> 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>
--+--





<Prev in Thread] Current Thread [Next in Thread>