X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/7e570fbf3ef8ccd31df2651f5d2775c5697d5950..0e963201d03d9229bb8ac4323291d2b0119526ed:/lisp/xml.el diff --git a/lisp/xml.el b/lisp/xml.el index d395f75ec0..2c3b6a49f6 100644 --- a/lisp/xml.el +++ b/lisp/xml.el @@ -1,6 +1,6 @@ ;;; xml.el --- XML parser -;; Copyright (C) 2000-2012 Free Software Foundation, Inc. +;; Copyright (C) 2000-2016 Free Software Foundation, Inc. ;; Author: Emmanuel Briot ;; Maintainer: Mark A. Hershberger @@ -126,9 +126,9 @@ tag. For example, would be represented by - '(\"\" . \"foo\"). + (\"\" . \"foo\"). -If you'd just like a plain symbol instead, use 'symbol-qnames in +If you'd just like a plain symbol instead, use `symbol-qnames' in the PARSE-NS argument." (car node)) @@ -200,7 +200,7 @@ See also `xml-get-attribute-or-nil'." ;; [68] EntityRef ::= '&' Name ';' (defconst xml-entity-ref (concat "&" xml-name-re ";")) -(defconst xml-entity-or-char-ref-re (concat "&\\(?:#\\(x\\)?\\([0-9]+\\)\\|\\(" +(defconst xml-entity-or-char-ref-re (concat "&\\(?:#\\(x\\)?\\([0-9a-fA-F]+\\)\\|\\(" xml-name-re "\\)\\);")) ;; [69] PEReference ::= '%' Name ';' @@ -326,8 +326,8 @@ URIs, and expanded names will be returned as a cons If PARSE-NS is an alist, it will be used as the mapping from namespace to URIs instead. -If it is the symbol 'symbol-qnames, expanded names will be -returned as a plain symbol 'namespace:foo instead of a cons. +If it is the symbol `symbol-qnames', expanded names will be +returned as a plain symbol `namespace:foo' instead of a cons. Both features can be combined by providing a cons cell @@ -356,8 +356,8 @@ URIs, and expanded names will be returned as a cons If PARSE-NS is an alist, it will be used as the mapping from namespace to URIs instead. -If it is the symbol 'symbol-qnames, expanded names will be -returned as a plain symbol 'namespace:foo instead of a cons. +If it is the symbol `symbol-qnames', expanded names will be +returned as a plain symbol `namespace:foo' instead of a cons. Both features can be combined by providing a cons cell @@ -479,7 +479,7 @@ Return one of: xml-default-ns)))) (cond ;; Processing instructions, like . - ((looking-at "<\\?") + ((looking-at-p "<\\?") (search-forward "?>") (skip-syntax-forward " ") (xml-parse-tag-1 parse-dtd xml-ns)) @@ -492,14 +492,14 @@ Return one of: (buffer-substring-no-properties pos (match-beginning 0)) (xml-parse-string)))) ;; DTD for the document - ((looking-at "") ;; FIXME: This loses the skipped-over spaces. (skip-syntax-forward " ") @@ -507,7 +507,7 @@ Return one of: (let ((xml-sub-parser t)) (xml-parse-tag-1 parse-dtd xml-ns)))) ;; end tag - ((looking-at "") + ((looking-at-p "/>") (forward-char 2) (nreverse children)) ;; is this a valid start tag ? @@ -543,7 +543,7 @@ Return one of: ((eobp) (error "XML: (Not Well-Formed) End of document while reading element `%s'" node-name)) - ((looking-at "") + (if (and (looking-at-p ">") xml-validating-parser) (error "XML: (Validity) Invalid DTD (expecting name of the document)")) @@ -755,7 +755,7 @@ This follows the rule [28] in the XML specifications." ;; Parse the rest of the DTD ;; Fixme: Deal with NOTATION, PIs. - (while (not (looking-at "\\s-*\\]")) + (while (not (looking-at-p "\\s-*\\]")) (skip-syntax-forward " ") (cond ((eobp) @@ -771,14 +771,14 @@ This follows the rule [28] in the XML specifications." (end-pos (match-end 0))) ;; Translation of rule [46] of XML specifications (cond - ((string-match "\\`EMPTY\\s-*\\'" type) ; empty declaration + ((string-match-p "\\`EMPTY\\s-*\\'" type) ; empty declaration (setq type 'empty)) - ((string-match "\\`ANY\\s-*$" type) ; any type of contents + ((string-match-p "\\`ANY\\s-*$" type) ; any type of contents (setq type 'any)) ((string-match "\\`(\\(.*\\))\\s-*\\'" type) ; children ([47]) (setq type (xml-parse-elem-type (match-string-no-properties 1 type)))) - ((string-match "^%[^;]+;[ \t\n\r]*\\'" type) ; substitution + ((string-match-p "^%[^;]+;[ \t\n\r]*\\'" type) ; substitution nil) (xml-validating-parser (error "XML: (Validity) Invalid element type in the DTD"))) @@ -803,7 +803,7 @@ This follows the rule [28] in the XML specifications." (goto-char (match-end 0))) ;; Comments (skip to end, ignoring parameter entity): - ((looking-at "") (and next-parameter-entity (> (point) next-parameter-entity) @@ -856,7 +856,6 @@ This follows the rule [28] in the XML specifications." (unless (looking-at xml-pe-reference-re) (error "XML: Internal error")) (let* ((entity (match-string 1)) - (beg (point-marker)) (elt (assoc entity xml-parameter-entity-alist))) (if elt (progn @@ -916,11 +915,11 @@ references and parameter-entity references." (progn (setq elem (match-string-no-properties 1 string) modifier (match-string-no-properties 2 string)) - (if (string-match "|" elem) + (if (string-match-p "|" elem) (setq elem (cons 'choice (mapcar 'xml-parse-elem-type (split-string elem "|")))) - (if (string-match "," elem) + (if (string-match-p "," elem) (setq elem (cons 'seq (mapcar 'xml-parse-elem-type (split-string elem ","))))))) @@ -987,13 +986,12 @@ by \"*\"." (if (and string (stringp string)) (let ((start 0)) (while (string-match "&#\\([0-9]+\\);" string start) - (condition-case nil - (setq string (replace-match - (string (read (substring string - (match-beginning 1) - (match-end 1)))) - nil nil string)) - (error nil)) + (ignore-errors + (setq string (replace-match + (string (read (substring string + (match-beginning 1) + (match-end 1)))) + nil nil string))) (setq start (1+ (match-beginning 0)))) string) nil)) @@ -1012,12 +1010,12 @@ The first line is indented with the optional INDENT-STRING." (defun xml-escape-string (string) "Convert STRING into a string containing valid XML character data. -Replace occurrences of &<>'\" in STRING with their default XML -entity references (e.g. replace each & with &). +Replace occurrences of &<>\\='\" in STRING with their default XML +entity references (e.g., replace each & with &). XML character data must not contain & or < characters, nor the > character under some circumstances. The XML spec does not impose -restriction on \" or ', but we just substitute for these too +restriction on \" or \\=', but we just substitute for these too \(as is permitted by the spec)." (with-temp-buffer (insert string)