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

Re: [xsl] iterate through nodes and determine output by node type


Subject: Re: [xsl] iterate through nodes and determine output by node type
From: Abel Braaksma <abel.online@xxxxxxxxx>
Date: Mon, 01 Oct 2007 18:41:39 +0200

Mario Madunic wrote:
I'd like to test all child elements of a body tag and wrap any text nodes (that
can contain child elements itself)in a p tag and <apply-templates /> to any
element nodes.

Using XSLT 1.1

XSLT 1.1 never got further then "Early draft" status and has been dropped completely many years ago. You probably either mean XSLT 2.0 or XSLT 1.0. In the case of the latter, consider extending Scott's solution with a pipeline like the following:


<xsl:template match="*" mode="make-lower">
    <xsl:element name="{lower-case(local-name())}"<
         <xsl:apply-templates select="node() | @*" />
    </xsl:element>
</xsl:template>

<xsl:template match="node() | @*" mode="make-lower">
    <xsl:copy />
</xsl:template>

This will effectively make all your names lowercase. Capture this into a variable and re-apply to the original solution of Scott. Now you only have to code for the lower case names. This solution is also available in XSLT 1.0, but then you have to apply exslt:node-set or another variant of that extension to the result set of your pipeline.

Cheers,
-- Abel Braaksma


Current Thread
Keywords