The custom markup language has been designed to have a certain structure. That is, there is supposed to be one <article> tag, followed by a <section> container, followed by a <text> container. The CSS stylesheet has been designed with this in mind. However, nothing actually enforces this structure. There is nothing stopping you from writing an article with arbitrary tag structure (or even using undefined tags). There are two problems with this:
- Both the XSLT and CSS stylesheets were designed with a certain nesting order in mind, and allowing a different structure risks having a document that doesn't look quite right when displayed.
- Not having a consistent structure makes it hard or even impossible to write an XML query tool for indexing articles, etc., since there is no fixed structure to parse.

While working on xml.pickle, I found myself repeatedly using hardcoded version checks like "if sys.version_info[1] >= 2", etc. When refactoring some code that had those types of checks in it, I ran into difficulty because the version check told me nothing about what capability was actually required.