Re: [xsl] Adding Missing Elements

Subject: Re: [xsl] Adding Missing Elements
From: "Joris Gillis" <roac@xxxxxxxxxx>
Date: Tue, 13 Sep 2005 21:52:14 +0200
Tempore 21:48:36, die 09/13/2005 AD, hinc in xsl-list@xxxxxxxxxxxxxxxxxxxxxx scripsit Joris Gillis <roac@xxxxxxxxxx>:

Given these possible variations and based on some processing elsewhere
in the document, I would like to make sure that <node> always has
<item>B</item> in its list...possibly adding <list> if it is not
present.

If there are no comments or processing-instruction in your xml, than you might write that even more concise:


<xsl:stylesheet version="1.0" xmlns:var="myvar"
	xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
	
<xsl:output method="xml" indent="yes"/>

<var:root>
	<list>
		<item>B</item>
	</list>
</var:root>

<xsl:variable name="var" select="document('')/xsl:stylesheet/var:root/*"/>

<xsl:template match="*">
	<xsl:element name="{local-name()}">
		<xsl:copy-of select="@*" />
		<xsl:apply-templates select="
			$var[current()/self::node][not(current()/list)]|
			$var[current()/self::list]/item[not(.=current()/item)]|
			node()" />
	</xsl:element>
</xsl:template>

</xsl:stylesheet>

--
Joris Gillis (http://users.telenet.be/root-jg/me.html)
B+Et ipsa scientia potestas estB;  - Francis Bacon , Meditationes sacrae

Current Thread