gpt4 book ai didi

xml - Clojure:data.xml:创建名为 "xlink:href"的键

转载 作者:数据小太阳 更新时间:2023-10-29 02:41:55 26 4
gpt4 key购买 nike

上下文

我正在使用 data.xml 从 clojure 输出一个 xml 文件。我需要输出以下行:

<use xlink:href="#whiskers" transform="scale(-1 1) translate(-140 0)" />

(我们正在用 SVG 画一只猫)。

现在,我的尝试是这样的:

(indent-str (element :use {:xlink:href "#whiskers",
:transform "scale(-1 1) translate(-140 0)"}))

失败是因为 :xlink:href "#whiwksers" 显然被解释为: : 链接 , :href "# mustache "

问题

如何创建一个 clojure 符号来输出“xlink:href”作为 data.xml 的字段?

编辑

我试过: (关键字“xlink:href”)

还是一样的错误。不确定发生了什么。

最佳答案

我不确定这里有没有错误。

(def e (element :use {:xlink:href "#whiskers",
:transform "scale(-1 1) translate(-140 0)"}))

(println (emit-str e))
=> <?xml version="1.0" encoding="UTF-8"?><use xlink:href="#whiskers" transform="scale(-1 1) translate(-140 0)"></use>

indent-str 函数有一个问题:

(println (indent-str e))
org.xml.sax.SAXParseException: The prefix "xlink" for attribute "xlink:href"
associated with an element type "use" is not bound.

所以看起来 clojure.data.xml 是命名空间感知的。让我们试试这个:

(def e-the-sequel (element :use {:xmlns:xlink "http://testing", 
:xlink:href "#whiskers",
:transform "scale(-1 1) translate(-140 0)"}))

(println (indent-str e-the-sequel))
=> <?xml version="1.0" encoding="UTF-8"?>
<use xmlns:xlink="http://testing" xlink:href="#whiskers"
transform="scale(-1 1) translate(-140 0)"/>

这样更好。如果有的话,我猜你可能会争辩说 emit-str 是错误的,因为它没有抛出异常。

关于xml - Clojure:data.xml:创建名为 "xlink:href"的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10868050/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com