[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

Re: [xsl] Re: Newbie question--applying templates, selecting paragraphs - S OLVED!!


Subject: Re: [xsl] Re: Newbie question--applying templates, selecting paragraphs - S OLVED!!
From: "David N Bertoni/Cambridge/IBM" <david_n_bertoni@xxxxxxxxxx>
Date: Fri, 24 May 2002 11:42:30 -0700

> The file below, adjusted per your recommendations, worked!! :)  Thank you
so
> much.
>
> <?xml version="1.0" encoding="UTF-8"?>
> <xsl:stylesheet
>     xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
>     xmlns:xhtml="http://www.w3.org/1999/xhtml"
>     version="1.0">
> <xsl:output method="xml" encoding="UTF-8"/>
>            <xsl:template match="*|@*|text()|comment()">
>                        <xsl:copy>
>                                    <xsl:apply-templates
> select="*|@*|text()|comment()"/>
>                        </xsl:copy>
>            </xsl:template>
>            <xsl:template match="xhtml:div[@class='mgronly']"/>
> </xsl:stylesheet>
>
> May I ask one more question that will hopefully help me understand more
> about XSL?  I understand now why the xhtml namespace is necessary.  But I
> don't understand why adding the second template worked.  If the first one
> says "copy everything," the second one must somehow override or modify
the
> first.  But syntactically, I don't see how that is accomplished.

xsl:copy does not make a deep copy, it only copies the current node.  The
xsl:apply-templates element with the xsl:copy recursively processes any
descendants.  The second template is more specific, and therefore, has a
higher default priority, so it is chosen rather than the first one, if it
matches the current node.  For more info, see:

   http://www.w3.org/TR/xslt#conflict

Is there some reason you're not just using the expression "node() | @*",
instead of "*|@*|text()|comment()"?  Are you excluding processing
instructions on purpose?

Dave



 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list



Current Thread
Keywords