API¶
This is the etgen
package.
Inspired by Frederik Lundh’s ElementTree Builder
See Usage. |
|
Convert an |
|
Tools for generating Belgian Intervat declarations. |
|
Tools for generating Open Document files and chunks thereof. |
|
A set of generator tags for building SEPA documents. |
|
Some utility functions. |
>>> E = Namespace('http://my.ns',
... "bar baz bar-o-baz foo-bar class def".split())
>>> bob = E.bar_o_baz()
>>> baz = E.add_child(bob, 'baz', class_='first')
>>> print tostring(baz)
<baz xmlns="http://my.ns" class="first" />
>>> bob = E.bar_o_baz('Hello', class_='first', foo_bar="3")
>>> print tostring(bob)
<bar-o-baz xmlns="http://my.ns" class="first" foo-bar="3">Hello</bar-o-baz>
The following reproduces a pifall. Here is the initial code:
>>> E = Namespace(None, "div br".split())
>>> bob = E.div("a", E.br(), "b", E. br(), "c", E.br(), "d")
>>> print tostring(bob)
<div>a<br />b<br />c<br />d</div>
The idea is to use join_elems()
to insert the <br> tags:
>>> from etgen.utils import join_elems
But surprise:
>>> elems = join_elems(["a", "b", "c", "d"], sep=E.br())
>>> print tostring(E.div(*elems))
<div>a<br />bcd<br />bcd<br />bcd</div>
What happened here is that the same <br> element instance was being inserted multiple times at different places. The correct usage is without the parentheses so that join_elems instantiates each time a new element:
>>> elems = join_elems(["a", "b", "c", "d"], sep=E.br)
>>> print tostring(E.div(*elems))
<div>a<br />b<br />c<br />d</div>