]> git.eshelyaron.com Git - emacs.git/commitdiff
fix up xml-debug-print
authorMark A. Hershberger <mah@everybody.org>
Tue, 18 Dec 2007 03:22:05 +0000 (03:22 +0000)
committerMark A. Hershberger <mah@everybody.org>
Tue, 18 Dec 2007 03:22:05 +0000 (03:22 +0000)
lisp/ChangeLog
lisp/xml.el

index 30b7a23d712d8622f159fd74cc0492ee8fb63fa8..3c348071fda8013352ec4eec3b0b52a59b83cec1 100644 (file)
@@ -1,3 +1,10 @@
+2007-12-18  Mark A. Hershberger  <mah@everybody.org>
+
+       * xml.el (xml-escape-string): New function.  Escape string using
+       xml-entity-alist.
+       (xml-debug-print-internal): Use xml-escape-string to escape
+       characters in attributes and in text children of elements.
+
 2007-12-18  Glenn Morris  <rgm@gnu.org>
 
        * progmodes/cc-subword.el (c-subword-mode): Drop support for
index 6ea6dd4f56cf914bc3ff32b0c82aabbe23b1a52d..20c582f06e805ebeee5bbc8c094418440024c7c1 100644 (file)
@@ -844,6 +844,17 @@ The first line is indented with the optional INDENT-STRING."
 
 (defalias 'xml-print 'xml-debug-print)
 
+(defun xml-escape-string (string)
+  (mapconcat (lambda (byte)
+               (let ((char (char-to-string byte)))
+                 (if (rassoc char xml-entity-alist)
+                     (concat "&" (car (rassoc char xml-entity-alist)) ";")
+                   char)))
+             (if (multibyte-string-p string)
+                 (encode-coding-string string 'utf-8)
+               string)
+             ""))
+
 (defun xml-debug-print-internal (xml indent-string)
   "Outputs the XML tree in the current buffer.
 The first line is indented with INDENT-STRING."
@@ -854,7 +865,8 @@ The first line is indented with INDENT-STRING."
     ;;  output the attribute list
     (setq attlist (xml-node-attributes tree))
     (while attlist
-      (insert ?\  (symbol-name (caar attlist)) "=\"" (cdar attlist) ?\")
+      (insert ?\  (symbol-name (caar attlist)) "=\""
+              (xml-escape-string (cdar attlist)) ?\")
       (setq attlist (cdr attlist)))
 
     (setq tree (xml-node-children tree))
@@ -869,7 +881,8 @@ The first line is indented with INDENT-STRING."
         ((listp node)
          (insert ?\n)
          (xml-debug-print-internal node (concat indent-string "  ")))
-        ((stringp node) (insert node))
+        ((stringp node)
+          (insert (xml-escape-string node)))
         (t
          (error "Invalid XML tree"))))