Skip to main content
https://travis-ci.org/plone/diazo.svg?branch=master

Diazo - We Write XSLT, So You Don’t Have To

Diazo allows you to apply a theme contained in a static HTML web page to a dynamic website created using any server-side technology. With Diazo, you can take an HTML wireframe created by a web designer and turn it into a theme for your favourite CMS, redesign the user interface of a legacy web application without even having access to the original source code, or build a unified user experience across multiple disparate systems, all in a matter of hours, not weeks.

When using Diazo, you will work with syntax and concepts familiar from working with HTML and CSS. And by allowing you seamlessly integrate XSLT into your rule files, Diazo makes common cases simple and complex requirements possible.

For detailed documentation, please see diazo.org.

Changelog

2.0.6 (2026-03-23)

Internal:

  • Update action workflows and other configuration files. [plone devs]

2.0.5 (2026-02-23)

Tests:

  • Do not test what happens when trying to put a title tag within a title tag. lxml 6 wants only text within the title tag. Rewrite the test to use a div in the body. [mauritsvanrees]

2.0.4 (2025-12-09)

Internal:

  • Update configuration files. [plone devs]

2.0.3 (2025-03-11)

Bug fixes:

  • Replace pkg_resources with importlib.resources @gforcada (#4126)

2.0.2 (2024-07-30)

Bug fixes:

  • Remove setuptools fossils. [maurits] (#72)

2.0.1 (2024-04-25)

Tests

  • Fix test in combination with lxml 5+ due to namespace changes. In this example, an xpath /html/body/include cannot be found because lxml 5 sees it as /html/body/esi:include, but this cannot easily be used as an xpath. [maurits] (#87)

2.0.0 (2024-02-12)

Breaking changes:

  • Drop support for Pythons that are end of life. Support Python 3.8-3.12. [maurits] (#23)

Internal:

  • Update configuration files. [plone devs] (5d3e918e)

1.5.0 (2022-10-31)

New features:

  • Remove dependency on future package. [petschki] (#85)

1.4.2 (2021-12-29)

Bug fixes:

  • Remove FormEncode test dependency. [maurits] (#83)

1.4.1 (2021-06-30)

Bug fixes:

  • Fix problems with tox4 and simplify tox and test setup. [loechel] (#80)

1.4.0 (2020-04-20)

New features:

  • Drop support for Python 3.4. No code changes. [maurits] (#78)

1.3.0 (2019-06-27)

New features:

  • Add support for Python 3.8 [pbauer] (#77)

1.2.12 (2019-05-01)

Bug fixes:

  • Avoid a ResourceWarning. [gforcada] (#75)

1.2.11 (2018-10-31)

Bug fixes:

  • Fix unicode errors in tests [petschki]

1.2.10 (2018-09-28)

Bug fixes:

  • Fix diazo.debug console with Python 2.7. [pbauer]

1.2.9 (2018-06-20)

Bug fixes:

  • Add compatibility for plone.app.testing for Python 3. [icemac]

1.2.8 (2017-08-28)

Bug fixes:

  • Make tox env release check manifest before releasing [loechel]

1.2.7 (2017-08-28)

Bug fixes:

  • Fix packaging error. [esteele]

1.2.6 (2017-08-27)

Bug fixes:

  • Code Cleanup and enforcing Code Conversions [loechel]

1.2.5 (2017-02-12)

Bug fixes:

  • Fix test with webob 1.7 [davisagli]

1.2.4 (2016-11-17)

New features:

  • only add absolute prefix for xlink:href attributes if url doesn’t start with a ‘#’ (use anchor_safe_urljoin) [huubbouma]

1.2.3 (2016-06-07)

New:

  • Add absolute url prefix to xlink:href attributes [krissik]

1.2.2 (2015-10-30)

New:

  • Allowed content-to-content inclusion. [elro, ebrehault]

1.2.1 (2015-09-07)

  • Absolute prefix support for srcset attributes [huubbouma]

1.2.0 (2015-09-03)

  • Extend cssselect instead of using experimental.cssselect [elro]

1.1.2 (2015-09-03)

  • Allow inline content for after and before. [ebrehault, elro]

  • Fixed issue with remote themes via https connections [loechel]

1.1.1 (2015-03-21)

  • Make flake8 happy by moving imports to top of file. [elro]

1.1.0 (2014-10-23)

  • Python 3 support. [regebro, elro]

1.0.6 (2014-09-11)

  • Use formencode’s xml_compare method to compare test results. This solves test failures on several systems. [timo]

  • Also evaluate if-not-content. However, we are at risk of replicating apply-conditions.xsl in it’s entirety. this needs refactoring. [lentinj]

  • Remove any xml:lang attribute from content to prevent multiple xml:lang attributes when the html tag’s attributes are copied. [danjacka]

1.0.5 (2014-01-27)

  • Escape curly brackets on theme attributes. [TracyWebTech]

1.0.4 (2013-08-14)

  • Provide the request’s query string as the $query_string variable for use in the rules file. [davidjb]

  • Fix diazo.scheme definition to be correct. Previously, this was defined as request.host. [davidjb]

1.0.3 (2012-11-11)

  • Support selectors matching multiple elements for merge attributes, e.g. <merge attributes="class" css:theme="body" css:content="#one, #two"/> [elro]

  • Also evaluate merged-condition. This means a rule tag will turn red when a condition on an outer rules tag doesn’t match. [lentinj]

  • use boolean(), not count() for if-content. Otherwise we generate expressions like “count(nodeset and other_nodeset)”, which aren’t valid. [lentinj]

  • Output contents of error log as part of debugging output [lentinj]

  • Debugging output. [lentinj]

  • Don’t close the response unless Diazo is transforming it. [mitchellrj]

  • fix error caused by empty style tag e.g. <style/> [djay]

1.0.2 (2012-08-30)

  • Handle error when serializing empty responses by returning an unthemed response. Previously, empty text/html responses resulted in an raised exception, resulting in a 500 response and no output. [davidjb]

  • Allow attributes (i.e. xml:id) to pass through on drop @attribute nodes [lentinj]

1.0.1 (2012-05-09)

  • Fixed to not apply absolute prefix for relative urls starting with ‘#’. [datakurre]

1.0 (2012-04-15)

  • Preserve resolvers in the rules document when updating from an old namespace.

  • Add javascript / css include support to WSGIResolver.

  • Refactoring if WSGI middleware to use WebOb better and fix corner cases.

  • Use same xpath prefix for css:if-not-content and css:if-content.

  • Add support for @if-not-path.

Note: for older changes, see docs/changelog.rst.

Release files for diazo 2.0.6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for diazo 2.0.6
File Size Uploaded
diazo-2.0.6.tar.gz 381.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for diazo 2.0.6
File Interpreter ABI Platform
diazo-2.0.6-py3-none-any.whl Python 3 none any Details

Total release size: 690.7 kB

Release files / diazo-2.0.6.tar.gz

Download URL diazo-2.0.6.tar.gz
Size 381.3 kB
Tags Source
SHA-256 checksum
How to use checksums
1e38270b8f9dbf172c5ffb054f69623d8e46bb69737b245c2e3a99d8179761d3
BLAKE2b-256 checksum
How to use checksums
f802ef9a2392134f9236080c7229fec3b765c0fe3da370b538e7b0bb5a501845
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.2

Release files / diazo-2.0.6-py3-none-any.whl

Download URL diazo-2.0.6-py3-none-any.whl
Size 309.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
fc3e0c003ac7fe5aa1d8fbc4974ed1923b6838afc2a3480103428c62d11837db
BLAKE2b-256 checksum
How to use checksums
b2565d889c064c5f22ea20505e27ca1f8720f77beb77e2eb91c562cf4b0b8c73
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.2

Release history Release notifications | RSS feed

This release

2.0.6 This release

2 release files

2.0.5

2 release files

2.0.4

2 release files

2.0.3

2 release files

2.0.2

2 release files

2.0.1

2 release files

2.0.0

2 release files

1.5.0

2 release files

1.4.2

2 release files

1.4.1

2 release files

1.4.0

2 release files

1.3.0

2 release files

1.2.11

2 release files

1.2.10

2 release files

1.2.9

2 release files

1.2.8

1 release file

1.2.7

1 release file

1.2.6

1 release file

1.2.5

1 release file

1.2.4

1 release file

1.2.3

1 release file

1.2.2

1 release file

1.2.1

1 release file

1.2.0

1 release file

1.1.3

1 release file

1.1.2

1 release file

1.1.1

1 release file

1.1.0

1 release file

1.0.6

1 release file

1.0.5

1 release file

1.0.4

1 release file

1.0.3

1 release file

1.0.2

1 release file

1.0.1

1 release file

1.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page