BlueM\XMLTransformer
 [x] Invoking the transformer with invalid xml produces an error
 [x] A function can be used as callback
 [x] A function which takes argumens by reference can be used as callback
 [x] A method can be used as callback
 [x] Returning an unexpected array key throws an exception
 [x] Returning an empty array yields no modifications
 [x] Returning an empty array only escapes CDATA if CDATA should not be preserved
 [x] Returning nothing or null yields no modifications
 [x] Returning false removes the tag and its content
 [x] Returning false for the tag removes the tag but keeps the content
 [x] A tag without namespace can be renamed
 [x] A tag with namespace can be renamed
 [x] A tag including its content can be removed
 [x] A tag can be removed while keeping its content
 [x] An empty tag can be removed
 [x] Attributes with and without namespace can be added
 [x] An attribute can be renamed
 [x] An attribute with namespace can be renamed
 [x] Values of attributes with and without namespace can be modified
 [x] An attribute can be removed
 [x] Only attributes which are present in the source tag are renamed
 [x] Content can be inserted before an element
 [x] Content can be prepended to an elements content
 [x] Content can be appended to an elements content
 [x] Content can be inserted after a non empty element
 [x] Content can be inserted after an empty element
 [x] Content can be inserted before an empty element that should be removed
 [x] The callback closure is given the correct tag type constant as argument
 [x] Trying to insert content at the beginning of an empty tag throws an exception
 [x] Trying to insert content at the end of an empty tag throws an exception
 [x] An outer transformation callback gets the unmodified content as argument
 [x] An outer transformation replaces the tag and its content
 [x] Outer content transformation works with nested tags to be transformed
 [x] An inner transformation callback gets the unmodified content as argument
 [x] An inner transformation keeps the tag but replaces its content
 [x] Content behind nested ignorable tags is not removed
 [x] Escaped special characters remain unmodified in attribute values
 [x] Removing tags completely works with nested tags
 [x] Entities get substituted

