Subject: Re: [xsl] Adding Missing Elements|
From: "J.Pietschmann" <j3322ptm@xxxxxxxx>
Date: Tue, 13 Sep 2005 21:13:14 +0200
....I have an element <node> which has a certain set of attributes and child nodes that will always be there. However, it has an additional <list> child element, that may or may not be present with varying child elements so <node> could have variations like this...
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.
<xsl:template match="node"> <xsl:copy-of select="@*/> <xsl:choose> <xsl:when test="list/item[.='B']"> <!-- ok so far; copy it --> <xsl:copy-of select="list"/> </xsl:when> <xsl:when test="list"> <!-- list exists, but no B item; add it --> <list> <xsl:copy-of select="list/node()"/> <item>B</item> </list> </xsl:when> <xsl:otherwise> <!-- no list; add it --> <list> <item>B</item> </list> </xsl:otherwise> </xsl:choose> <xsl:apply-templates/> </xsl:template>