Documentation
Commentary
This file contains a somewhat incomplete non-validating XML parser. It
parses a file, and returns a list that can be used internally by
any other Lisp libraries.
FILE FORMAT
The document type declaration may either be ignored or (optionally)
parsed, but currently the parsing will only accept element
declarations. The XML file is assumed to be well-formed. In case
of error, the parsing stops and the XML file is shown where the
parsing stopped.
It also knows how to ignore comments and processing instructions.
The XML file should have the following format:
<node1 attr1="name1" attr2="name2" ...>value
<node2 attr3="name3" attr4="name4">value2</node2>
<node3 attr5="name5" attr6="name6">value3</node3>
</node1>
Of course, the name of the nodes and attributes can be anything. There can
be any number of attributes (or none), as well as any number of children
below the nodes.
There can be only top level node, but with any number of children below.
LIST FORMAT
The functions `xml-parse-file', `xml-parse-region' and
`xml-parse-tag' return a list with the following format:
xml-list ::= (node node ...)
node ::= (qname attribute-list . child_node_list)
child_node_list ::= child_node child_node ...
child_node ::= node | string
qname ::= (:namespace-uri . "name") | "name"
attribute_list ::= ((qname . "value") (qname . "value") ...)
| nil
string ::= "..."
Some macros are provided to ease the parsing of this list.
Whitespace is preserved. Fixme: There should be a tree-walker that
can remove it.
TODO:
* xml:base, xml:space support
* more complete DOCTYPE parsing
* pi support
Requires
Dependencies
No package dependencies recorded.
Consumers
Reverse Dependencies
- delicious
- elim
- ell
- fsvn
- gds
- twitel
- xml-weather
- jde-mvn
- odf-mode
- dbus
- gnus
- newsticker
- url
- diamondsms
- edom
- scrape
- soap
- technorati
- xml-event
- xml-stream
- airplay
- android-mode
- anything-hatena-bookmark
- atom
- csmart-mode
- dbus-codegen
- docsetutil
- eclim
- elfeed
- emacspeak
- emms
- emms-player-mpv-jp-radios
- esv
- esxml
- fm-bookmarks
- geben
- gmail-notifier
- google-contacts
- gscholar-bibtex
- helm
- helm-delicious
- helm-words
- highrise
- i2b2-mode
- identica-mode
- jquery-doc
- nexus
- niconama
- org-ref
- org-seenthis
- org-toodledo
- pinot
- pivotal-tracker
- podcaster
- portage-navi
- posterous
- pvr
- redmine
- rtm
- shampoo
- steam
- tbx2org
- tumblr-mode
- twit
- twittering-mode
- vc-darcs
- w3m-https-everywhere
- weather
- weather-metno
- weechat
- wolfram
- xml+
- xml-quotes
- xml-rpc
- yandex-weather
- dbk
- emoticons
- glade-mode
- itunes
- moikrug
- rss
- rudel
- w3
- nxhtml
- ein
- copy-as-format
- promise
- cliphist
- wotd
- elfeed-org
- atom-api
- dragbox
- wanderlust
- flex-compile
- adafruit-wisdom
- smbc
- bart-mode
- anything
- ert-junit
- company-suggest
- mw-thesaurus
- proof-general
- org-msg
- buttercup-junit
- w3m
- battle-haxe
- dash-docs
- plantuml-mode
- jabber
- osx-plist
- org-roam
- axe
- leo
- muse
- javaimp
- docbook
- sokoban
- transcribe
- zotero
- hyperbole
- speechd
- svg-lib
- org
- telega
- citar
- python-coverage
- arxiv-mode
- wordreference
- dap-mode
- ement
- esn
- erc
- soap-client
- svg
- subed
- lsp-bridge
- sentex
- clang-format
- org-contrib
- elpa-admin
- math-preview
- doom
- idlwave
- atomizer
- mondo
- yeetube
- ekg