Markup 0.2.0 - August 22, 2006
We're proud to present the latest release of the Markup: 0.2.0.
Markup is a Python library that provides an integrated set of
components for stream-based parsing, generating, and processing of
HTML or XML content in a uniform manner. The major feature is a
template language, which is heavily inspired by Kid.
You can download the new release here:
Please don't hesitate to report any issues you may find with this
For questions, comments and user discussions, please use the Markup
* XPath syntax errors now contain position info (ticket #20).
* Errors in expression evaluation now contain the correct line
number in the template (ticket #22).
* <script> and <style> element contents are no longer escaped when
using HTML serialization (ticket #24).
* In some cases expressions in templates did not get interpolated
* CDATA sections are now passed through the pipeline and serialized
correctly. That allows using <script> or <style> elements in
XHTML output that is still compatible with HTML user agents.
* The XHTML serializer now correctly handles elements in foreign
namespaces (such as SVG or MathML).
* Fixed relative includes in templates on Windows (ticket #27).
* Output can be encoded using legacy codecs such as ISO-8859-1.
Any character not representable in the chosen encoding gets
replaced by the corresponding XML character reference.
* String literals in XPath expressions that contain spaces are now
parsed as expected.
* Added support for the XPath functions boolean(), ceiling(),
concat(), contains(), false(), floor(), normalize-space(),
number(), round(), starts-with(), string-length(), substring(),
substring-after(), substring-before(), translate(), and true().
* Non-ASCII characters in expressions should now be handled
correctly (ticket #29).
* Default values for arguments of template functions now also
work with constants and complex expressions (they only worked
for string or number literals before).
* XPath expressions in now support XPath variables ($var) in
predicates (ticket #31).
* Expressions in templates can now span multiple lines if they are
enclosed in curly braces.
* py:def macros can now be invoked from within expressions inside
attribute values (ticket #34).
A big thank you to everyone who tried Markup and provided feedback,
reported bugs and/or contributed patches!
cmlenz at gmx.de