meerk40t / svgelements

SVG Parsing for Elements, Paths, and other SVG Objects.
MIT License
124 stars 28 forks source link

Problematic `xmlns:ns0` with `write_xml` #246

Open alexreg opened 4 months ago

alexreg commented 4 months ago

Take an SVG like the following.

<svg xmlns:ns0="http://www.w3.org/1999/xlink" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ev="http://www.w3.org/2001/xml-events">
    ...
</svg>

If I then load and write this SVG back to a file, as follows.

svg = SVG.parse("input.svg")
svg.write_xml("output.svg")

Then I get something like this.

<svg xmlns:ns0="http://www.w3.org/1999/xlink" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ev="http://www.w3.org/2001/xml-events">
    ...
</svg>

This is invalid XML, since the same namespace is defined with two different names (ns0 and xlink), and causes problems with some other programs that read SVGs.