Commit aea67018 authored by David Engster's avatar David Engster
Browse files

xml: Fix parsing of default namespace with quoted names

* lisp/xml.el (xml-parse-attlist): Properly extract namespace when
  parsing is done with quoted symbol names (bug#23440).
* test/lisp/xml-tests.el (xml-parse-test--default-namespace-qnames)
  (xml-parse-test-default-namespace-qnames): Test for the above.
parent 267c98ae
......@@ -646,8 +646,10 @@ surpassed `xml-entity-expansion-limit'"))))
(defun xml-parse-attlist (&optional xml-ns)
"Return the attribute-list after point.
Leave point at the first non-blank character after the tag."
(let ((attlist ())
end-pos name)
(let* ((attlist ())
(symbol-qnames (eq (car-safe xml-ns) 'symbol-qnames))
(xml-ns (if symbol-qnames (cdr xml-ns) xml-ns))
end-pos name)
(skip-syntax-forward " ")
(while (looking-at (eval-when-compile
(concat "\\(" xml-name-re "\\)\\s-*=\\s-*")))
......
......@@ -134,6 +134,21 @@ Parser is called with and without 'symbol-qnames argument.")
(append xml-default-ns
'(("F" . "FOOBAR:"))))))))))
;; Test bug #23440 (proper expansion of default namespace)
; Test data for default namespace
(defvar xml-parse-test--default-namespace-qnames
(cons "<something xmlns=\"myns:\"><whatever></whatever></something>"
'((myns:something
((("http://www.w3.org/2000/xmlns/" . "")
. "myns:"))
(myns:whatever nil)))))
(ert-deftest xml-parse-test-default-namespace-qnames ()
(with-temp-buffer
(insert (car xml-parse-test--default-namespace-qnames))
(should (equal (cdr xml-parse-test--default-namespace-qnames)
(xml-parse-region nil nil nil nil 'symbol-qnames)))))
;; Local Variables:
;; no-byte-compile: t
;; End:
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment