Most of the changes involve improving the handling of start tag attributes. dxml.parser.getAttrs in particular is likely to be of interest to those looking to reduce the amount of code necessary when dealing with start tag attributes.
The deprecated aliases, dxml.util.normalize and dxml.util.asNormalized, have been removed. Any code that has not yet been updated to use decodeXML and asDecodedXML will no longer compile until it's been updated.
EntityRange.Entity and DOMEntity now have an alias named Attribute which contains the exact instantiation of std.typecons.Tuple that their attributes functions return ranges of. This will make it easier to refer to them by their exact type when required (e.g. when creating an output range of them).
The trait dxml.parser.isAttrRange has been added. It's true if the given type is a range of attributes such as those returned by EntityRange.Entity.attributes and DOMEntity.attributes.
The function dxml.parser.getAttrs has been added. It's essentially the XML attribute equivalent of getopt.
Fixed dxml issue #10: Made internal function, skipStartsWith leverage std.algorithm.searching.skipOver
EntityRange now uses Appender internally instead of using dynamic arrays directly for handling the validation of tags and attributes, since benchmarking indicated that using Appender was slightly faster.