Edit file File name : xml.elc Content :;ELC ;;; Compiled ;;; in Emacs version 26.1 ;;; with all optimizations. ;;; This file contains utf-8 non-ASCII characters, ;;; and so cannot be loaded into Emacs 22 or earlier. (and (boundp 'emacs-version) (< (aref emacs-version (1- (length emacs-version))) ?A) (string-lessp emacs-version "23") (error "`%s' was compiled for Emacs 23 or later" #$)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;; #@43 What to substitute for undefined entities (defconst xml-undefined-entity "?" (#$ . 408)) #@53 Alist mapping default XML namespaces to their URIs. (defconst xml-default-ns '((#1="" . #1#) ("xml" . "http://www.w3.org/XML/1998/namespace") ("xmlns" . "http://www.w3.org/2000/xmlns/")) (#$ . 503)) #@55 Alist mapping XML entities to their replacement text. (defvar xml-entity-alist '(("lt" . "<") ("gt" . ">") ("apos" . "'") ("quot" . "\"") ("amp" . "&")) (#$ . 708)) #@293 The maximum size of entity reference expansions. If the size of the buffer increases by this many characters while expanding entity references in a segment of character data, the XML parser signals an error. Setting this to nil removes the limit (making the parser vulnerable to XML bombs). (defvar xml-entity-expansion-limit 20000 (#$ . 888)) #@43 Alist of defined XML parametric entities. (defvar xml-parameter-entity-alist nil (#$ . 1239)) #@57 Non-nil when the XML parser is parsing an XML fragment. (defvar xml-sub-parser nil (#$ . 1339)) #@42 Set to non-nil to get validity checking. (defvar xml-validating-parser nil (#$ . 1441)) #@393 Return the tag associated with NODE. Without namespace-aware parsing, the tag is a symbol. With namespace-aware parsing, the tag is a cons of a string representing the uri of the namespace with the local name of the tag. For example, <foo> would be represented by ("" . "foo"). If you'd just like a plain symbol instead, use `symbol-qnames' in the PARSE-NS argument. (fn NODE) (defalias 'xml-node-name #[257 "\211@\207" [] 2 (#$ . 1536)]) (put 'xml-node-name 'byte-optimizer 'byte-compile-inline-expand) #@72 Return the list of attributes of NODE. The list can be nil. (fn NODE) (defalias 'xml-node-attributes #[257 "\211A@\207" [] 2 (#$ . 2061)]) (put 'xml-node-attributes 'byte-optimizer 'byte-compile-inline-expand) #@93 Return the list of children of NODE. This is a list of nodes, and it can be nil. (fn NODE) (defalias 'xml-node-children #[257 "\211AA\207" [] 2 (#$ . 2278)]) (put 'xml-node-children 'byte-optimizer 'byte-compile-inline-expand) #@139 Return the children of NODE whose tag is CHILD-NAME. CHILD-NAME should match the value returned by `xml-node-name'. (fn NODE CHILD-NAME) (defalias 'xml-get-children #[514 "\300\211AA\262\211\203( \211@\211<\203! \211\211@\262\232\203! \211B\262A\266\202\202 \210\211\237\207" [nil] 7 (#$ . 2513)]) #@134 Get from NODE the value of ATTRIBUTE. Return nil if the attribute was not found. See also `xml-get-attribute'. (fn NODE ATTRIBUTE) (defalias 'xml-get-attribute-or-nil #[514 "\300\211A@\262\"A\207" [assoc] 6 (#$ . 2827)]) #@158 Get from NODE the value of ATTRIBUTE. An empty string is returned if the attribute was not found. See also `xml-get-attribute-or-nil'. (fn NODE ATTRIBUTE) (defalias 'xml-get-attribute #[514 "\300\"\206 \301\207" [xml-get-attribute-or-nil ""] 5 (#$ . 3060)]) (put 'xml-get-attribute 'byte-optimizer 'byte-compile-inline-expand) (defconst xml-name-start-char-re "[[:word:]:_]") (defconst xml-name-char-re "[-0-9.[:word:]:_·̀-ͯ‿-⁀]") (defconst xml-name-re (concat xml-name-start-char-re xml-name-char-re "*")) (defconst xml-names-re (concat xml-name-re "\\(?: " xml-name-re "\\)*")) (defconst xml-nmtoken-re (concat xml-name-char-re "+")) (defconst xml-nmtokens-re (concat xml-nmtoken-re "\\(?: " xml-name-re "\\)*")) (defconst xml-char-ref-re "\\(?:&#[0-9]+;\\|&#x[0-9a-fA-F]+;\\)") (defconst xml-entity-ref (concat "&" xml-name-re ";")) (defconst xml-entity-or-char-ref-re (concat "&\\(?:#\\(x\\)?\\([0-9a-fA-F]+\\)\\|\\(" xml-name-re "\\)\\);")) (defconst xml-pe-reference-re (concat "%\\(" xml-name-re "\\);")) (defconst xml-reference-re (concat "\\(?:" xml-entity-ref "\\|" xml-char-ref-re "\\)")) (defconst xml-att-value-re (concat "\\(?:\"\\(?:[^&\"]\\|" xml-reference-re "\\)*\"\\|" "'\\(?:[^&']\\|" xml-reference-re "\\)*'\\)")) (defconst xml-tokenized-type-re "\\(?:ID\\|IDREF\\|IDREFS\\|ENTITY\\|ENTITIES\\|NMTOKEN\\|NMTOKENS\\)") (defconst xml-notation-type-re (concat "\\(?:NOTATION\\s-+(\\s-*" xml-name-re "\\(?:\\s-*|\\s-*" xml-name-re "\\)*\\s-*)\\)")) (defconst xml-enumeration-re (concat "\\(?:(\\s-*" xml-nmtoken-re "\\(?:\\s-*|\\s-*" xml-nmtoken-re "\\)*\\s-+)\\)")) (defconst xml-enumerated-type-re (concat "\\(?:" xml-notation-type-re "\\|" xml-enumeration-re "\\)")) (defconst xml-att-type-re (concat "\\(?:CDATA\\|" xml-tokenized-type-re #1="\\|" xml-notation-type-re #1# xml-enumerated-type-re "\\)")) (defconst xml-default-decl-re (concat "\\(?:#REQUIRED\\|#IMPLIED\\|" "\\(?:#FIXED\\s-+\\)*" xml-att-value-re "\\)")) (defconst xml-att-def-re (concat "\\(?:\\s-*" xml-name-re #1="\\s-*" xml-att-type-re #1# xml-default-decl-re "\\)")) (defconst xml-entity-value-re (concat "\\(?:\"\\(?:[^%&\"]\\|" xml-pe-reference-re #1="\\|" xml-reference-re "\\)*\"\\|'\\(?:[^%&']\\|" xml-pe-reference-re #1# xml-reference-re "\\)*'\\)")) #@147 Syntax table used by the XML parser. In this syntax table, the XML space characters [ \t\r\n], and only those characters, have whitespace syntax. (defvar xml-syntax-table (byte-code "\300\301\302\"\303\211\203 \211@\304\305#\210A\266\202\202 \210\304\306\307#\210\304\310\307#\210\304\311\307#\210\304\312\307#\210\304\313\307#\210\304\314\307#\210\304\315\307#\210\304\316\307#\210\304\317\307#\210\304\320\307#\210\304\321\307#\210\304\322\307#\210\304\323\307#\210\304\324\307#\210\211\207" [make-char-table syntax-table (3) (32 9 13 10) modify-syntax-entry " " (65 . 90) "w" (97 . 122) (192 . 214) (216 . 246) (248 . 767) (880 . 893) (895 . 8191) (8204 . 8205) (8304 . 8591) (11264 . 12271) (12289 . 55295) (63744 . 64975) (65008 . 65533) (65536 . 983039)] 7) (#$ . 5327)) #@688 Parse the well-formed XML file FILE. Return the top node with all its children. If PARSE-DTD is non-nil, the DTD is parsed rather than skipped. If PARSE-NS is non-nil, then QNAMES are expanded. By default, the variable `xml-default-ns' is the mapping from namespaces to URIs, and expanded names will be returned as a cons ("namespace:" . "foo"). 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. Both features can be combined by providing a cons cell (symbol-qnames . ALIST). (fn FILE &optional PARSE-DTD PARSE-NS) (defalias 'xml-parse-file #[769 "\300\301!r\211q\210\302\303\304\305\306!\307\"\310$\216\311!\210\312\"*\207" [generate-new-buffer " *temp*" make-byte-code 0 "\301\300!\205 \302\300!\207" vconcat vector [buffer-name kill-buffer] 2 insert-file-contents xml--parse-buffer] 10 (#$ . 6130)]) #@917 Parse the region from BEG to END in BUFFER. Return the XML parse tree, or raise an error if the region does not contain well-formed XML. If BEG is nil, it defaults to `point-min'. If END is nil, it defaults to `point-max'. If BUFFER is nil, it defaults to the current buffer. If PARSE-DTD is non-nil, parse the DTD and return it as the first element of the list. If PARSE-NS is non-nil, then QNAMES are expanded. By default, the variable `xml-default-ns' is the mapping from namespaces to URIs, and expanded names will be returned as a cons ("namespace:" . "foo"). 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. Both features can be combined by providing a cons cell (symbol-qnames . ALIST). (fn &optional BEG END BUFFER PARSE-DTD PARSE-NS) (defalias 'xml-parse-region #[1280 "\204 p\262\300\301!r\211q\210\302\303\304\305\306!\307\"\310$\216\311#\210\312\"*\207" [generate-new-buffer " *temp*" make-byte-code 0 "\301\300!\205 \302\300!\207" vconcat vector [buffer-name kill-buffer] 2 insert-buffer-substring-no-properties xml--parse-buffer] 12 (#$ . 7117)]) #@27 (fn PARSE-DTD PARSE-NS) (defalias 'xml--parse-buffer #[514 "\305 p\306\307\310\311\312\"\313\"\314$\216\315!\210\316 \n\316\211\211eb\210m\204\204 \317\320\316\321#\203~ \322u\210\323\n\n\"\262\204J m\204% \324u\210\202% \203Y \f\204Y \325\326!\210\202% @<\203v \203v @\262A\203% AB\262\202% B\262\202% db\210\202% \203\220 \211\237B\202\222 \237+\266\206)\207" [xml-syntax-table xml-entity-alist xml-parameter-entity-alist case-fold-search xml-sub-parser syntax-table make-byte-code 0 "r\301q\210\302\300!)\207" vconcat vector [set-syntax-table] 2 set-syntax-table nil search-forward "<" t -1 xml-parse-tag-1 1 error "XML: (Not Well-Formed) Only one root tag allowed"] 14 (#$ . 8369)]) #@600 Perform any namespace expansion. NAME is the name to perform the expansion on. DEFAULT is the default namespace. XML-NS is a cons of namespace names to uris. When namespace-aware parsing is off, then XML-NS is nil. During namespace-aware parsing, any name without a namespace is put into the namespace identified by DEFAULT. nil is used to specify that the name shouldn't be given a namespace. Expanded names will by default be returned as a cons. If you would like to get plain symbols instead, provide a cons cell (symbol-qnames . ALIST) in the XML-NS argument. (fn NAME DEFAULT XML-NS) (defalias 'xml-maybe-do-ns #[771 "\211:\203n \211\242\300=\301\302\"\211\203 \303\225\304O\202 \203&