Jonathan M Davis: The Long-Winded D Guy
Changelog for dxml 0.2.0

The big changes here are that basic DOM support was added with dxml.dom, and dxml.parser.stax was renamed to dxml.parser, since it's really the only parser - the DOM support really doesn't even act like its own parser and is very explicit about how it's merely a way to store the results of the StAX parser, so it seemed better to just rename the module and reduce the length of the import path.

  • Renamed dxml.parser.stax to dxml.parser. For this release, dxml.parser.stax is an empty, deprecated module which publicly imports dxml.parser in order to not break any code, but in 0.3.0, dxml.parser.stax will be removed.

  • Added dxml.dom, which adds DOM support to dxml. dxml.dom.parseDOM dom returns a dxml.dom.DOMEntity which recursively represents the DOM tree. It uses dxml.parser.EntityRange and does no additional parsing of any kind on its own. DOMEntity is just a type for holding the parsing results as a DOM tree. There are currently no helper functions for DOMEntity beyond what already exists in dxml.util for normalizing XML strings.

  • opEquals was removed from EntityRange.Entity. It didn't handle pos properly, and in retrospect, it really doesn't make sense. When comparing entities from the same document, the pos property is sufficient to detect whether two entities refer to the same point in the document, and it's unclear what it should mean to compare entities from separate documents. Ultimately, it seemed far better to leave that up to the programmer.

    It's recommended that anyone wanting to compare entities simply compare the properties of the entity that they want to be checking. Alternatively, the pos property will uniquely identify an entity within an XML document.

  • Fixed some cases where a range that's a class would cause segfaults due to having a null init value.