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.