Mercurial > emacs
changeset 87317:e8a485c87523
fix up xml-debug-print
author | Mark A. Hershberger <mah@everybody.org> |
---|---|
date | Tue, 18 Dec 2007 03:22:05 +0000 |
parents | 3038b17c409e |
children | 3b14ea2b1d8a |
files | lisp/ChangeLog lisp/xml.el |
diffstat | 2 files changed, 22 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/ChangeLog Tue Dec 18 02:32:40 2007 +0000 +++ b/lisp/ChangeLog Tue Dec 18 03:22:05 2007 +0000 @@ -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
--- a/lisp/xml.el Tue Dec 18 02:32:40 2007 +0000 +++ b/lisp/xml.el Tue Dec 18 03:22:05 2007 +0000 @@ -844,6 +844,17 @@ (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 @@ ;; 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 @@ ((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"))))