[xsl] Subtree Transformation

Subject: [xsl] Subtree Transformation
From: Garvin Riensche <g.riensche@xxxxxxx>
Date: Thu, 15 Mar 2007 12:36:58 +0100
Hello,

I am wondering if it is possible to change a subtree of an XML tree whose structure is not always the same. For example, the input XML can look like

<a>
  <b>
    <c id="1"/>
  </b>
</a>

I want to add some more "<c>" tags as children of the "<b>" tag to get something like this:

<a>
  <b>
    <c id="1"/>
    <c id="2"/>
    ...
  </b>
</a>

If the input would always look like this I would write a stylesheet that looks like the following:

<xsl:stylesheet match="/">
<a>
  <b>
    <xsl:copy-of="/a/b/c"/>
    <c id="2"/>
    <c id="3"/>
  </b>
</a>

But how can I add further siblings to "<c>" if the preceding nodes differ and if there are more tags below the closing "</b>" like in this example:

<a>
  <b>
    <bb>
      <bbb/>
    </bb>
    <c id="1"/>
  </b>
  <d>
     <e/>
     ...
  </d>
</a>


I need to copy everything and add some additional "<c>" tags. I dont't know how to do that becase with xsl:copy-of I can copy the whole tree but it can not be changed and if I iterate trough the tree with xsl:copy every tag is immideately closed. It would be nice if someone could help.


Regards,
Garvin

Current Thread