Subject: Re: [xsl] xsl:copy From: "Agnes Kielen" <a.kielen@xxxxxxx> Date: Sat, 6 Jul 2002 15:34:11 +0200 |
Hi, Cenk wrote: > I have a XSL file as follows: > > <?xml version="1.0"?> > <xsl:stylesheet version="1.0" > xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> > <xsl:template match="/ | @* | node()"> > <xsl:copy> > <xsl:apply-templates select="@* | node()"/> > </xsl:copy> > </xsl:template> > </xsl:stylesheet> >I try to copy a XML file's tags which satisifies my > language filtering. For example I will only copy following XML's > lang='en' and no language defined tags: > > <page> > <title lang="tr">Hoºgeldiniz</title> > <title lang="en">Wellcome</title> > <description> > assafs aszdfsd > </description> > </page> Try this: <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="@*"> <xsl:copy> <xsl:apply-templates select="node()"/> </xsl:copy> </xsl:template> <xsl:template match="node()"> <xsl:copy> <xsl:apply-templates select="node()[@lang='en'] | node()[not(@lang)]" mode="cp"/> </xsl:copy> </xsl:template> <xsl:template match="node()" mode="cp"> <xsl:copy> <xsl:apply-templates select="node() | @*"/> </xsl:copy> </xsl:template> </xsl:stylesheet> I split the <xsl:template match="/ | @* | node()"> in two seperate templates. I removed match / because that is not really necessary. By the "match=node()" the copy is only done when the @lang is 'en' or does not exist. In that case the template with mode='cp' is called. Hope that helps, Agnes XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] xsl:copy, Cenk Uysal | Thread | Re: [xsl] xsl:copy, Marrow |
Re: [xsl] xsl:copy, Marrow | Date | [xsl] RE: [difference between proce, Michael Kay |
Month |