[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#23440: 25.1.50; xml.el parses default namespace incorrectly
From: |
David Engster |
Subject: |
bug#23440: 25.1.50; xml.el parses default namespace incorrectly |
Date: |
Wed, 04 May 2016 08:06:36 +0200 |
User-agent: |
Gnus/5.13001 (Ma Gnus v0.10) Emacs/25.0.50 (gnu/linux) |
Eric Abrahamsen writes:
> Apparently xml.el isn't doing quite the right thing when parsing xml
> default namespaces. With the following text:
>
> <multistatus xmlns="DAV:">
> </multistatus>
>
> M-: (xml-parse-region nil nil nil nil 'symbol-qnames)
>
> Should return:
>
> ((DAV:multistatus ((... . "DAV:"))
>
> But actually returns:
>
> ((multistatus ((http://www\.w3\.org/2000/xmlns/xmlns . "DAV:"))
Should be fixed by the attached patch, but I need to test a bit more
before pushing it.
-David
diff --git a/lisp/xml.el b/lisp/xml.el
index 414300c..848a030 100644
--- a/lisp/xml.el
+++ b/lisp/xml.el
@@ -646,8 +646,10 @@ xml-parse-string
(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-*")))