这是一个文件yo.svg:
<svg width="200" height="200" xmlns="http://www.w3.org/2000/svg">
<circle cx="50" cy="50" r="50" stroke="black" stroke-width="2" fill="red" />
</svg>
Firefox 和 Chrome 都将其呈现为带有黑色边框的红色圆圈。(我不知道其他浏览器在做什么)。
下面是一些 clojure 代码(1.4 版),它将其写入yo.svg、解析、重新编码,然后将结果写入yo2.svg,如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<svg width="200" height="200">
<circle cx="50" cy="50" r="50" stroke="black" stroke-width="2" fill="red"/>
</svg>
显然,clojure 正在做出改变。两种浏览器都不会呈现yo2.svg。
我在想我做错了什么,但大量的研究让我感到困惑:
我想知道为什么 clojure 进行这些更改,以及我是否应该忽略 clojure.data.xml 并手动生成 xml,或者使用 clojure.data.xml 做中间位并编写我自己的标头。svg 甚至是一种 xml 吗?
这是我的clojure程序:
(require 'clojure.data.xml)
(let [ xml-picture "<svg width=\"200\" height=\"200\" xmlns=\"http://www.w3.org/2000/svg\">
<circle cx=\"50\" cy=\"50\" r=\"50\" stroke=\"black\" stroke-width=\"2\" fill=\"red\" />
</svg>"
round-trip-picture (clojure.data.xml/indent-str
(clojure.data.xml/parse-str
xml-picture))]
(spit "yo.svg" xml-picture)
(spit "yo2.svg" round-trip-picture)
(println xml-picture)
(println "------------------")
(println round-trip-picture))