The code, such as it is, is available at http://www.slinkp.com/code/zopestuff/templates/Meld2.py ... feedback welcome!
It requires PyMeldLite.py, which is available as part of SpamBayes
Note, Meld2.py is currently tested only with Python 2.4.
Check the docstrings for usage examples.
Rationale at http://www.slinkp.com/code/zopestuff/templates/
Here's one:
>>> print text
<div meld:id="outer">
<span meld:id="orange" style="color: orange;">
<span meld:id="inner">
<p meld:id="orange">Fruity!</p>
</span>
<span meld:id="inner2">
<p meld:id="orange">Chewing gum</p>
</span>
</span>
</div>
>>> xml = ['<yeah/>', '<all/>', '<right/>']
>>> data = Meld2(text)
>>> g = data.outer.repeat(xml)
>>> for thing, info in g: thing.inner = info
...
>>> print data
<div meld:id="outer/0">
<span meld:id="orange" style="color: orange;">
<span meld:id="inner"><yeah/></span>
<span meld:id="inner2">
<p meld:id="orange">Chewing gum</p>
</span>
</span>
</div><div meld:id="outer/1">
<span meld:id="orange" style="color: orange;">
<span meld:id="inner"><all/></span>
<span meld:id="inner2">
<p meld:id="orange">Chewing gum</p>
</span>
</span>
</div><div meld:id="outer/2">
<span meld:id="orange" style="color: orange;">
<span meld:id="inner"><right/></span>
<span meld:id="inner2">
<p meld:id="orange">Chewing gum</p>
</span>
</span>
</div>
>>>