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

RE: [xsl] Excluding a complete branch while identity copying


Subject: RE: [xsl] Excluding a complete branch while identity copying
From: "Ryan Graham" <Ryan.Graham@xxxxxxxxxxx>
Date: Fri, 10 Oct 2008 10:50:07 -0700

Empty template matches will omit those from the output:

<!--Identity template-->
<xsl:template match="@*|*">
    <xsl:copy>
      <xsl:apply-templates select="@*"/>
      <xsl:apply-templates/>
    </xsl:copy>
  </xsl:template>

<--empty templates override the identity transform for specified
matches-->
  <xsl:template match="Evens | Squares"/>

HTH,
Ryan

-----Original Message-----
From: Fraser Goffin [mailto:goffinf@xxxxxxxxxxxxxx]
Sent: Friday, October 10, 2008 10:44 AM
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: [xsl] Excluding a complete branch while identity copying

I want to be able to copy a complete XML instance as/is except for [say]
some specific parts of the input tree. I thought immediately of using an
identity transform and specifying copy, but how to remove those pesky
sub-trees :-

Say this was my input :-

<Numbers>
	<Odds>
		<One>1</One>
		<Three>3</Three>
		<Five>5</Five>
	</Odds>
	<Evens>
		<Two>2</Two>
		<Four>4</Four>
		<Six>6</Six>
	</Evens>
	<Doubles>
		<Two>4</Two>
		<Four>8</Four>
		<Eight>16</Eight>
	</Doubles>
	<Squares>
		<Two>4</Two>
		<Four>16</Four>
		<Eight>64</Eight>
	</Squares>
</Numbers>

and I want to copy everything to output except <Evens> and <Squares>.

Lets also assume that the order of the input is undefined, so Evens and
Squares may/may not be in the positions I have shown above, although I
can assume that they are both children of <Numbers>.
Further, I don't know what all the children of Evens and Squares are
called I just know I don't want them.

Whats the easiest way of accomplishing this ?

many thanks

Fraser.


This message is private and confidential. If you have received it in error,
please notify the sender and remove it from your system.


Current Thread
Keywords
xml