Re: [xsl] how to get rid of tag names

Subject: Re: [xsl] how to get rid of tag names
From: Andrew Watt <andrew@xxxxxxxxxxxxxx>
Date: Thu, 01 May 2003 16:31:44 +0100
At 11:01 01/05/2003 -0400, you wrote:
so instead of
       <p>p line</p>
I just need to have
       p line

Hi,


I wasn't totally clear about exactly the output you wanted.

Here is a stylesheet which will get rid of the <p> element for you.

With an <xsl:copy-of> which you had in your code you will copy all descendant nodes, which isn't what you wanted.

Try this stylesheet.

<?xml version='1.0'?>
<xsl:stylesheet
 version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
 >
<xsl:output method="xml" indent="yes" encoding="UTF-8" />
<xsl:template match="/">
 <xsl:apply-templates select="*" />
</xsl:template>

<xsl:template match="*">
<xsl:copy>
 <xsl:apply-templates select="*" />
</xsl:copy>
</xsl:template>

<xsl:template match="p">
 <xsl:apply-templates />
</xsl:template>

</xsl:stylesheet>

The <xsl:copy> element copies the elements you want but not any descendants. The <xsl:apply-templates> then processes child nodes. By having a separate template for the <p> element node which has no <xsl:copy> then you get rid of the unwanted <p> element but by using <xsl:apply-templates > you get the child text node that you want.

If you had attributes in the source document then you would need to copy those explicitly.

I hope that helps.

Andrew Watt



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


Current Thread