Subject: bug#26533: closed (Re: bug#26533: 26.0.50; xml-parse-region's symbol-qname argument is ignored)

From: [email-masked] (GNU bug Tracking System)
Date: Mon, 17 Apr 2017 15:34:02 +0000

Your bug report

#26533: 26.0.50; xml-parse-region's symbol-qname argument is ignored

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
26533: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=26533
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#26533: 26.0.50; xml-parse-region's symbol-qname argument is ignored
From: David Engster <[email-masked]>
To: Christopher Wellons <[email-masked]>
Cc: [email-masked]
Date: Mon, 17 Apr 2017 17:33:07 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

Christopher Wellons writes:
> A bug was introduced in aea67018 that causes the special "symbol-qnames"
> value for PARSE-NS to be ignored, as if it were nil. This information is
> discarded by the change to xml-parse-attlist, so functions further down
> the line see the argument as if it was set to nil.
>
> Here's an example of the bug:
>
>     (with-temp-buffer
>       (insert "<root a:b='c'></root>")
>       (let ((xml-default-ns ()))
>         (xml-parse-region nil nil nil nil 'symbol-qnames)))
>
> Prior to this commit (Emacs 25.1 and earlier) the result is:
>
>     ((root ((b . "c"))))
>
> After this commit:
>
>     ((root ((a:b . "c"))))
>
> This is the same as PARSE-NS being set to nil.

Thanks for the report.

You are right that the fix for bug #23440 was not correct. I now pushed
a hopefully better version to master.

Note however that your test above has two problems: First, it's invalid
XML since you're using an undeclared prefix (so the parser should rather
throw an error, but I'm not eager to make the xml parser more strict, as
there's a lot of invalid XML in the wild). Second, I don't understand
why you let-bind `xml-default-ns' to nil. This will break namespace
expansion, and it will actually do this for the whole Emacs session if
xml.el gets autoloaded during the above.

-David

Subject: 26.0.50; xml-parse-region's symbol-qname argument is ignored
From: Christopher Wellons <[email-masked]>
To: [email-masked]
Date: Sun, 16 Apr 2017 08:36:07 -0400
List-Id: <debbugs-submit.debbugs.gnu.org>

A bug was introduced in aea67018 that causes the special "symbol-qnames"
value for PARSE-NS to be ignored, as if it were nil. This information is
discarded by the change to xml-parse-attlist, so functions further down
the line see the argument as if it was set to nil.

Here's an example of the bug:

    (with-temp-buffer
      (insert "<root a:b='c'></root>")
      (let ((xml-default-ns ()))
        (xml-parse-region nil nil nil nil 'symbol-qnames)))

Prior to this commit (Emacs 25.1 and earlier) the result is:

    ((root ((b . "c"))))

After this commit:

    ((root ((a:b . "c"))))

This is the same as PARSE-NS being set to nil.