[xsl] returning nodes which have a specific child

Subject: [xsl] returning nodes which have a specific child
From: jim mcgovern <jim.mcgovern2@xxxxxxxxxxxxxx>
Date: Wed, 1 Jul 2009 09:06:00 +0100
Hi All

Hopefully someone can assist me in something that I thought would be
trivial but I'm obviously missing something.  What I need to do is
return a set of nodes that contain a certain child node.  In the case
below I need to return all the nodes that contain a child node which
have a name of "CONTENT".

So my initial xml is :-

<folder name="dir1" id="x1">
	<folder name="dir2" id="x2">
		<folder name="CONTENT" id="x3"></folder>
		<folder name="dir4" id="x4">
			<folder name="dir5" id="x5">
				<folder name="CONTENT" id="x3"></folder>
				<folder name="dir6" id="x6">
					<folder name="dir7" id="x7">
						<folder name="dir8" id="x8"></folder>
						<folder name="dir9" id="x9"></folder>
						<folder name="CONTENT" id="x10"></folder>
					</folder>
				</folder>
			</folder>
		</folder>
	</folder>
</folder>

And what I need to end up with is:-

<folder name="dir2" id="x2">
	<folder name="dir5" id="x5">
		<folder name="dir7" id="x7">
		</folder>
	</folder>
</folder>

It's important that the xml is nested as above which is the part I'm
having trouble with.  I'm sure there's something obvious I'm
missing...anyone got an example xsl that would do this or some
pointers would be appreciated?

Many thanks

jim

Current Thread