Mercurial > emacs
diff lisp/xml.el @ 58698:10ecc7ffdc5a
2004-11-30 Mark A. Hershberger <mah@everybody.org>
* xml.el (xml-substitute-special): Fix validity error messages to
actually show the unexpandable entity. Added validity error if &
isn't followed by an entity.
(xml-parse-tag): Concatnate any string following the a
<![CDATA[]]> section to the parsed CDATA.
author | Mark A. Hershberger <mah@everybody.org> |
---|---|
date | Wed, 01 Dec 2004 04:45:08 +0000 |
parents | 8f9302e4a35f |
children | ff6b2a793277 |
line wrap: on
line diff
--- a/lisp/xml.el Wed Dec 01 04:08:34 2004 +0000 +++ b/lisp/xml.el Wed Dec 01 04:45:08 2004 +0000 @@ -371,7 +371,9 @@ (let ((pos (match-end 0))) (unless (search-forward "]]>" nil t) (error "XML: (Not Well Formed) CDATA section does not end anywhere in the document")) - (buffer-substring pos (match-beginning 0)))) + (concat + (buffer-substring pos (match-beginning 0)) + (xml-parse-string)))) ;; DTD for the document ((looking-at "<!DOCTYPE") (let ((dtd (xml-parse-dtd parse-ns))) @@ -703,7 +705,7 @@ (let ((point 0) children end-point) - (while (string-match "&\\([^;]+\\);" string point) + (while (string-match "&\\([^;]*\\);" string point) (setq end-point (match-end 0)) (let* ((this-part (match-string 1 string)) (prev-part (substring string point (match-beginning 0))) @@ -721,10 +723,12 @@ (if c (string c)))) (entity (cdr entity)) + ((eq (length this-part) 0) + (error "XML: (Validity) No entity given")) (t (if xml-validating-parser (error "XML: (Validity) Undefined entity `%s'" - (match-string 1 this-part))))))) + this-part)))))) (cond ((null children) ;; FIXME: If we have an entity that expands into XML, this won't work.