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.
This commit is contained in:
parent
267c98ae48
commit
aea6701839
2 changed files with 19 additions and 2 deletions
|
@ -646,8 +646,10 @@ surpassed `xml-entity-expansion-limit'"))))
|
||||||
(defun xml-parse-attlist (&optional xml-ns)
|
(defun xml-parse-attlist (&optional xml-ns)
|
||||||
"Return the attribute-list after point.
|
"Return the attribute-list after point.
|
||||||
Leave point at the first non-blank character after the tag."
|
Leave point at the first non-blank character after the tag."
|
||||||
(let ((attlist ())
|
(let* ((attlist ())
|
||||||
end-pos name)
|
(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 " ")
|
(skip-syntax-forward " ")
|
||||||
(while (looking-at (eval-when-compile
|
(while (looking-at (eval-when-compile
|
||||||
(concat "\\(" xml-name-re "\\)\\s-*=\\s-*")))
|
(concat "\\(" xml-name-re "\\)\\s-*=\\s-*")))
|
||||||
|
|
|
@ -134,6 +134,21 @@ Parser is called with and without 'symbol-qnames argument.")
|
||||||
(append xml-default-ns
|
(append xml-default-ns
|
||||||
'(("F" . "FOOBAR:"))))))))))
|
'(("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:
|
;; Local Variables:
|
||||||
;; no-byte-compile: t
|
;; no-byte-compile: t
|
||||||
;; End:
|
;; End:
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue