XMLTag — tool for easy creating XML and HTML documents in the Python style. Idea was taken from yattag, but xmltag offers an improved features with less code (really, api is very small, just see source code).
$ pip install xmltag
from xmltag import HTMLDocument
doc = HTMLDocument()
with doc.head():
doc.title('Document')
with doc.body():
doc.h1('Helo world!', class_="heading")
users = ['Marry', 'John', 'Bob']
with doc.ul(id='user-list'):
for name in users:
doc.li(name)
print(doc.render())
More examples avaliable in examples directory.
You can write different XML-like documents, such as XML, HTML or XHTML. Just use one of these classes: XMLDocument
, HTMLDocument
or XHTMLDocument
.
from xmltag import HTMLDocument, XHTMLDocument, XMLDocument
xhtml_doc = XHTMLDocument()
xml_doc.input(name="email")
print(xml_doc.render()) # <input name="email" />
html_doc = HTMLDocument()
html_doc.input(name="email")
print(xml_doc.render()) # <input name="email">
You can create layouts for reusing code.
class PageLayout(Layout):
def setup_document(self):
return HTMLDocument()
def setup_layout(self, doc):
with doc.head():
with doc.title():
self.define('title')
- Define
setup_document
method and return document instance from it. - Write layout in
setup_layout
method and define placeholders usingself.define
method.
Following this actions you can inherit from PageLayout
and define render_title
method.
class Page(PageLayout):
def render_title(self, doc):
doc.text('Hello World!')
Then call Page().render()
. All placeholders that are defined in layout class will be filled with content.
XMLTag provide escaping content by default.
Add safe=True
if you don't need it.
doc.div(unescaped_text, safe=True)