File tree Expand file tree Collapse file tree 4 files changed +14
-8
lines changed
main/clojure/clojure/data
test/clojure/clojure/data/xml Expand file tree Collapse file tree 4 files changed +14
-8
lines changed Original file line number Diff line number Diff line change @@ -76,7 +76,8 @@ for documentation on xml options. These are the defaults:
7676 (let [props* (merge {:include-node? #{:element :characters }
7777 :coalescing true
7878 :supporting-external-entities false
79- :location-info true }
79+ :location-info true
80+ :namespace-aware true }
8081 opts)]
8182 (pull-seq (make-stream-reader props* source)
8283 props*
Original file line number Diff line number Diff line change 7979 XMLStreamConstants/START_ELEMENT
8080 (if (include-node? :element )
8181 (let [ns-env (nss-hash sreader (or (first ns-envs) pu/EMPTY))
82- tag (qname (when-not namespace-aware (.getNamespaceURI sreader))
82+ tag (qname (when namespace-aware (.getNamespaceURI sreader))
8383 (.getLocalName sreader)
8484 (.getPrefix sreader))
8585 attrs (attr-hash sreader)
Original file line number Diff line number Diff line change 5151 ([uri local] (keyword (when-not (str/blank? uri)
5252 (encode-uri (str " xmlns." uri)))
5353 local))
54- ([uri local prefix ] (qname uri local)))
54+ ([uri local _prefix ] (qname uri local)))
5555
5656; ; The empty string shall be equal to nil for xml names
5757(defn namespaced? [qn]
Original file line number Diff line number Diff line change 1616 [" uri-u:" " name" ] [::U/name " {uri-u:}name" (parse-qname " {uri-u:}name" ) (as-qname " {uri-u:}name" )]
1717 [" uri-v:" " vname" ] [::V/vname " {uri-v:}vname" (parse-qname " {uri-v:}vname" )]
1818 [" uri-w:" " wname" ] [::W/wname " {uri-w:}wname" (parse-qname " {uri-w:}wname" )]
19- ; ; ["http://www.w3.org/XML/1998/namespace" "name"] [:xml/name]
19+ [" http://www.w3.org/XML/1998/namespace" " name" ] [:xml/name ]
2020 [" http://www.w3.org/2000/xmlns/" " name" ] [:xmlns/name ]))
2121
2222
2727 " <?xml version=\" 1.0\" encoding=\" UTF-8\" ?><D:limit xmlns:D=\" DAV:\" ><D:nresults>100</D:nresults></D:limit>" ))
2828
2929(deftest test-parse-raw
30- (are [xml result] (= (parse-str xml) result)
31- " <D:limit xmlns:D=\" DAV:\" ><D:nresults>100</D:nresults></D:limit>"
32- (element ::D/limit {}
33- (element ::D/nresults nil " 100" ))))
30+ (testing " includes namespace in tags when namespace-aware is true"
31+ (is (= (element ::D/limit {}
32+ (element ::D/nresults nil " 100" ))
33+ (parse-str " <D:limit xmlns:D=\" DAV:\" ><D:nresults>100</D:nresults></D:limit>" ))))
34+ (testing " leaves namespace off tags when namespace-aware is false"
35+ (is (= (element :limit {:xmlns.http%3 A%2 F%2 Fwww.w3.org%2 F2000%2 Fxmlns%2 F/D " DAV:" }
36+ (element :nresults nil " 100" ))
37+ (parse-str " <limit xmlns:D=\" DAV:\" ><nresults>100</nresults></limit>"
38+ :namespace-aware false )))))
3439
3540(deftest qnames
3641 (is (= (qname " foo" ) (as-qname :foo ))))
You can’t perform that action at this time.
0 commit comments