[XSL-LIST Mailing List Archive Home]
[By Thread]
[By Date]
David Carlisle wrote:
That's great (and quick)! It works like a charm. fn:starts-with() was expected in any solution because of the chosen names in my example, but I actually need a union of named nodes. Funny I never thought of using the 'except' operator though, indeed: now it is fairly simple....
For any a reason I try to avoid using for-each, but you put me in the right direction for doing the same trick with only a pull (or was it push?) model. I now use a variant of this which places the special cases to the root level, which eases maintenance, I hope:
<xsl:key name="t" match="Make-Toute-Seul-1 | Make-Toute-Seul-2 | Make-Toute-Seul-3" use="''" />
Thanks!
Abel
Re: [xsl] Copying parent nodes with different selection of their content
Subject: Re: [xsl] Copying parent nodes with different selection of their content From: Abel Braaksma <abel.online@xxxxxxxxx> Date: Wed, 25 Apr 2007 17:48:25 +0200 |
David Carlisle wrote:
<xsl:template match="Body">
<xsl:variable name="x" select="Document/*[starts-with(name(),'Make-Toute-Seul-')]"/>
<xsl:copy>
<xsl:for-each select="$x">
<Document>
<xsl:copy-of select="(../* except $x)|."/>
</Document>
</xsl:for-each>
</xsl:copy>
That's great (and quick)! It works like a charm. fn:starts-with() was expected in any solution because of the chosen names in my example, but I actually need a union of named nodes. Funny I never thought of using the 'except' operator though, indeed: now it is fairly simple....
For any a reason I try to avoid using for-each, but you put me in the right direction for doing the same trick with only a pull (or was it push?) model. I now use a variant of this which places the special cases to the root level, which eases maintenance, I hope:
<xsl:key name="t" match="Make-Toute-Seul-1 | Make-Toute-Seul-2 | Make-Toute-Seul-3" use="''" />
<xsl:template match="/"> <xsl:apply-templates select="$copy-me/*"/> </xsl:template>
<xsl:template match="Body"> <xsl:copy> <xsl:apply-templates select="key('t', '')" /> </xsl:copy> </xsl:template>
<xsl:template match="key('t', '')"> <Document> <xsl:copy-of select="(../* except key('t', ''))|."/> </Document> </xsl:template>
<xsl:template match="* | @*"> <xsl:copy> <xsl:apply-templates select="node() | @*" /> </xsl:copy> </xsl:template>
Thanks!
Abel
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Copying parent nodes with, David Carlisle | Thread | RE: [xsl] Copying parent nodes with, Michael Kay |
Re: [xsl] (newbie) Need DOCTYPE com, Martin Honnen | Date | Re: [xsl] Copying parent nodes with, Abel Braaksma |
Month |