]> git.eshelyaron.com Git - emacs.git/commitdiff
2004-11-30 Mark A. Hershberger <mah@everybody.org>
authorMark A. Hershberger <mah@everybody.org>
Wed, 1 Dec 2004 04:45:08 +0000 (04:45 +0000)
committerMark A. Hershberger <mah@everybody.org>
Wed, 1 Dec 2004 04:45:08 +0000 (04:45 +0000)
* 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.

lisp/xml.el

index b0d5d45f98d191d5139b2bc060ac3a1cea75bbfe..ec048a440bd434725ee8afd058718323e6301c2e 100644 (file)
@@ -371,7 +371,9 @@ Returns one of:
       (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 @@ This follows the rule [28] in the XML specifications."
 
   (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 @@ This follows the rule [28] in the XML specifications."
                       (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.