据我所知,lacij库不支持“script”标签。所以我试图包含一个javascript src。
当我尝试以下
(def new-graph (lacij.edit/build old-graph))
(def element (tikkba.util.dom/elements (:xmldoc new-graph) tikkba.dom/svg-ns [:script {:src "myscript.js"}]))
(println element)
(tikkba.util.dom/append-child (:xmldoc new-graph) element)
(def new-graph (lacij.edit/build old-graph))
(def element (tikkba.util.dom/elements (:xmldoc new-graph) tikkba.dom/svg-ns [:script {:src "myscript.js"}]))
(println element)
(tikkba.util.dom/append-child (:xmldoc new-graph) element)
我得到一个“节点(类型:1,名称:脚本)无法插入,因为文档节点已经有一个类型为1的节点。”异常而不是我不知道为什么。 “脚本”节点首先不在Dom中。 我很感激这里的任何帮助。
答案 0 :(得分:0)
好的 - 所以我有一些东西供你试试。我之前没有使用过lacij或者tikkba,所以我不确定它是不是惯用的。在Clojure中以这种方式变换xml文档让我感到有点不安 - 但我想这只是在进行java互操作时的方式。
无论如何,这里是:
首先使用lacij构建图形:
(use 'lacij.edit.graph)
(def g
(-> (graph)
(add-node :a "A" :x 50 :y 20)
(add-node :b "B" :x 50 :y 100)
(add-edge :a-to-b :a :b)
(build)))
然后使用tikkba创建并添加脚本元素:
(use 'tikkba.utils.dom)
(def element
(elements
(:xmldoc g)
tikkba.dom/svg-ns
[:script {:src "myscript.js"}]))
(append-child (document-element (:xmldoc g)) element)
(spit-xml "test-with-script.svg" (:xmldoc g))
脚本将附加在文档的末尾。
<强>推理强>
我猜之前tikkba抱怨在XML文件的顶层添加。 xml文档中已有文档标记(<svg>
),XML文件只能有一个根元素。上面的代码指示tikkba在 svg元素中添加而不是在顶层。它似乎工作。