3

コンテクスト

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"は明らかに::xlink、:href "#whiskers"として解釈されるため、これは失敗します

質問

data.xmlのフィールドとして「xlink:href」を出力するclojureシンボルを作成するにはどうすればよいですか?

編集

私は試しました:(キーワード"xlink:href")

それでも同じエラー。何が起こっているのかわからない。

4

2 に答える 2

1

ここにエラーがあるかどうかはわかりません。

(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どちらかといえば、例外をスローしなかったので、それは間違っていると主張できると思います。

于 2012-06-04T00:55:23.507 に答える
0

これを試して:

(element :use {:xlink/href "#whiskers",
               :transform "scale(-1 1) translate(-140 0)"})
于 2012-06-03T07:23:18.627 に答える