Skip to main content

Tool for generating HTML and XML documents

Project description

https://img.shields.io/pypi/v/xmltag.svg https://travis-ci.org/zenwalker/python-xmltag.svg https://coveralls.io/repos/github/zenwalker/python-xmltag/badge.svg

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).

Installation

$ pip install xmltag

Usage example

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.

Different syntaxes

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">

Layouts

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')
  1. Define setup_document method and return document instance from it.

  2. Write layout in setup_layout method and define placeholders using self.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.

Escaping

XMLTag provide escaping content by default. Add safe=True if you don’t need it.

doc.div(unescaped_text, safe=True)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

xmltag-1.3.0.tar.gz (4.0 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page