boostorg / property_tree

Boost.org property_tree module
http://boost.org/libs/property_tree
55 stars 92 forks source link

XML writer / parser does not implement attribute normalization, it is not conformant #97

Open bubnikv opened 2 years ago

bubnikv commented 2 years ago

boost::property_tree is able to read the XML attribute values it writes, however it seems to not implement XML attribute normalization: https://www.w3.org/TR/REC-xml/#AVNormalize

Namely, if a XML attribute value contains newlines or tabs, these newlines or tabs are replaced by libexpat by spaces after parsing and before passing to an application due to the mandatory normalization as shown by the following table from the XML norm:

image

Please note that an attribute type is considered CDATA by default.

And by the way, none of the XML parsers / writers that I checked (boost serialization, tinyxml, lib3mf) seem to implement normalization.

This issue is similar to https://github.com/3MFConsortium/lib3mf/issues/288