blob: afda8159799ba861eb180f608533d5e224fc26f7 [file] [log] [blame]
Fred Drake295da241998-08-10 19:42:37 +00001\section{\module{xmllib} ---
Fred Drake34250111999-02-19 23:45:06 +00002 A parser for XML documents}
3
Fred Drakeb91e9341998-07-23 17:59:49 +00004\declaremodule{standard}{xmllib}
Fred Drake34250111999-02-19 23:45:06 +00005\modulesynopsis{A parser for XML documents.}
Fred Drake191f2851998-12-22 18:06:02 +00006\moduleauthor{Sjoerd Mullender}{Sjoerd.Mullender@cwi.nl}
7\sectionauthor{Sjoerd Mullender}{Sjoerd.Mullender@cwi.nl}
Fred Drakeb91e9341998-07-23 17:59:49 +00008
Fred Drakeb91e9341998-07-23 17:59:49 +00009
Guido van Rossuma10768a1997-11-18 15:11:22 +000010\index{XML}
Fred Drake5cb48a41998-12-22 18:46:13 +000011\index{Extensible Markup Language}
12
13\versionchanged{1.5.2}
Guido van Rossuma10768a1997-11-18 15:11:22 +000014
Fred Drake3b5da761998-03-12 15:33:05 +000015This module defines a class \class{XMLParser} which serves as the basis
Fred Drake5cb48a41998-12-22 18:46:13 +000016for parsing text files formatted in XML (Extensible Markup Language).
Guido van Rossuma10768a1997-11-18 15:11:22 +000017
Fred Drake3b5da761998-03-12 15:33:05 +000018\begin{classdesc}{XMLParser}{}
Guido van Rossume7f19201999-08-26 15:57:44 +000019The \class{XMLParser} class must be instantiated without
20arguments.\footnote{Actually, a number of keyword arguments are
21recognized which influence the parser to accept certain non-standard
22constructs. The following keyword arguments are currently
23recognized. The defaults for all of these is \code{0} (false).
24\var{accept_unquoted_attributes} (accept certain attribute values
25without requiring quotes), \var{accept_missing_endtag_name} (accept
26end tags that look like \code{</>}), \var{map_case} (map upper case to
27lower case in tags and attributes), \var{accept_utf8} (allow UTF-8
28characters in input; this is required according to the XML standard,
29but Python does not as yet deal properly with these characters, so
30this is not the default).}
Fred Drake3b5da761998-03-12 15:33:05 +000031\end{classdesc}
32
Guido van Rossumb083a9f1998-12-18 20:17:13 +000033This class provides the following interface methods and instance variables:
34
35\begin{memberdesc}{attributes}
36A mapping of element names to mappings. The latter mapping maps
37attribute names that are valid for the element to the default value of
38the attribute, or if there is no default to \code{None}. The default
Guido van Rossum09da65e1999-02-02 17:55:12 +000039value is the empty dictionary. This variable is meant to be
40overridden, not extended since the default is shared by all instances
41of \class{XMLParser}.
Guido van Rossumb083a9f1998-12-18 20:17:13 +000042\end{memberdesc}
43
44\begin{memberdesc}{elements}
45A mapping of element names to tuples. The tuples contain a function
46for handling the start and end tag respectively of the element, or
47\code{None} if the method \method{unknown_starttag()} or
48\method{unknown_endtag()} is to be called. The default value is the
Guido van Rossum09da65e1999-02-02 17:55:12 +000049empty dictionary. This variable is meant to be overridden, not
50extended since the default is shared by all instances of
51\class{XMLParser}.
Guido van Rossumb083a9f1998-12-18 20:17:13 +000052\end{memberdesc}
53
54\begin{memberdesc}{entitydefs}
55A mapping of entitynames to their values. The default value contains
56definitions for \code{'lt'}, \code{'gt'}, \code{'amp'}, \code{'quot'},
57and \code{'apos'}.
58\end{memberdesc}
Guido van Rossuma10768a1997-11-18 15:11:22 +000059
Fred Drakefc576191998-04-04 07:15:02 +000060\begin{methoddesc}{reset}{}
Guido van Rossuma10768a1997-11-18 15:11:22 +000061Reset the instance. Loses all unprocessed data. This is called
62implicitly at the instantiation time.
Fred Drakefc576191998-04-04 07:15:02 +000063\end{methoddesc}
Guido van Rossuma10768a1997-11-18 15:11:22 +000064
Fred Drakefc576191998-04-04 07:15:02 +000065\begin{methoddesc}{setnomoretags}{}
Guido van Rossuma10768a1997-11-18 15:11:22 +000066Stop processing tags. Treat all following input as literal input
67(CDATA).
Fred Drakefc576191998-04-04 07:15:02 +000068\end{methoddesc}
Guido van Rossuma10768a1997-11-18 15:11:22 +000069
Fred Drakefc576191998-04-04 07:15:02 +000070\begin{methoddesc}{setliteral}{}
Guido van Rossumf484a331998-12-07 21:59:56 +000071Enter literal mode (CDATA mode). This mode is automatically exited
72when the close tag matching the last unclosed open tag is encountered.
Fred Drakefc576191998-04-04 07:15:02 +000073\end{methoddesc}
Guido van Rossuma10768a1997-11-18 15:11:22 +000074
Fred Drakefc576191998-04-04 07:15:02 +000075\begin{methoddesc}{feed}{data}
Guido van Rossuma10768a1997-11-18 15:11:22 +000076Feed some text to the parser. It is processed insofar as it consists
Guido van Rossumb083a9f1998-12-18 20:17:13 +000077of complete tags; incomplete data is buffered until more data is
Fred Drake3b5da761998-03-12 15:33:05 +000078fed or \method{close()} is called.
Fred Drakefc576191998-04-04 07:15:02 +000079\end{methoddesc}
Guido van Rossuma10768a1997-11-18 15:11:22 +000080
Fred Drakefc576191998-04-04 07:15:02 +000081\begin{methoddesc}{close}{}
Guido van Rossuma10768a1997-11-18 15:11:22 +000082Force processing of all buffered data as if it were followed by an
83end-of-file mark. This method may be redefined by a derived class to
84define additional processing at the end of the input, but the
Fred Drake3b5da761998-03-12 15:33:05 +000085redefined version should always call \method{close()}.
Fred Drakefc576191998-04-04 07:15:02 +000086\end{methoddesc}
Guido van Rossuma10768a1997-11-18 15:11:22 +000087
Fred Drakefc576191998-04-04 07:15:02 +000088\begin{methoddesc}{translate_references}{data}
Fred Drake3b5da761998-03-12 15:33:05 +000089Translate all entity and character references in \var{data} and
Fred Draked8a41e61999-02-19 17:54:10 +000090return the translated string.
Fred Drakefc576191998-04-04 07:15:02 +000091\end{methoddesc}
Guido van Rossum02505e41998-01-29 14:55:24 +000092
Fred Drakefc576191998-04-04 07:15:02 +000093\begin{methoddesc}{handle_xml}{encoding, standalone}
94This method is called when the \samp{<?xml ...?>} tag is processed.
Guido van Rossum02505e41998-01-29 14:55:24 +000095The arguments are the values of the encoding and standalone attributes
96in the tag. Both encoding and standalone are optional. The values
Fred Drake3b5da761998-03-12 15:33:05 +000097passed to \method{handle_xml()} default to \code{None} and the string
Guido van Rossum02505e41998-01-29 14:55:24 +000098\code{'no'} respectively.
Fred Drakefc576191998-04-04 07:15:02 +000099\end{methoddesc}
Guido van Rossum02505e41998-01-29 14:55:24 +0000100
Fred Drake38e5d272000-04-03 20:13:55 +0000101\begin{methoddesc}{handle_doctype}{tag, pubid, syslit, data}
Fred Drakefc576191998-04-04 07:15:02 +0000102This method is called when the \samp{<!DOCTYPE...>} tag is processed.
Fred Drake38e5d272000-04-03 20:13:55 +0000103The arguments are the name of the root element, the Formal Public
104Identifier (or \code{None} if not specified), the system identifier,
105and the uninterpreted contents of the internal DTD subset as a string
106(or \code{None} if not present).
Fred Drakefc576191998-04-04 07:15:02 +0000107\end{methoddesc}
Guido van Rossum02505e41998-01-29 14:55:24 +0000108
Fred Drakefc576191998-04-04 07:15:02 +0000109\begin{methoddesc}{handle_starttag}{tag, method, attributes}
Guido van Rossumb083a9f1998-12-18 20:17:13 +0000110This method is called to handle start tags for which a start tag
111handler is defined in the instance variable \member{elements}. The
112\var{tag} argument is the name of the tag, and the \var{method}
113argument is the function (method) which should be used to support semantic
114interpretation of the start tag. The \var{attributes} argument is a
115dictionary of attributes, the key being the \var{name} and the value
116being the \var{value} of the attribute found inside the tag's
117\code{<>} brackets. Character and entity references in the
118\var{value} have been interpreted. For instance, for the start tag
Guido van Rossuma10768a1997-11-18 15:11:22 +0000119\code{<A HREF="http://www.cwi.nl/">}, this method would be called as
Guido van Rossumb083a9f1998-12-18 20:17:13 +0000120\code{handle_starttag('A', self.elements['A'][0], \{'HREF': 'http://www.cwi.nl/'\})}.
Fred Drake3b5da761998-03-12 15:33:05 +0000121The base implementation simply calls \var{method} with \var{attributes}
Guido van Rossuma10768a1997-11-18 15:11:22 +0000122as the only argument.
Fred Drakefc576191998-04-04 07:15:02 +0000123\end{methoddesc}
Guido van Rossuma10768a1997-11-18 15:11:22 +0000124
Fred Drakefc576191998-04-04 07:15:02 +0000125\begin{methoddesc}{handle_endtag}{tag, method}
Guido van Rossumb083a9f1998-12-18 20:17:13 +0000126This method is called to handle endtags for which an end tag handler
127is defined in the instance variable \member{elements}. The \var{tag}
128argument is the name of the tag, and the \var{method} argument is the
129function (method) which should be used to support semantic
130interpretation of the end tag. For instance, for the endtag
131\code{</A>}, this method would be called as \code{handle_endtag('A',
132self.elements['A'][1])}. The base implementation simply calls
Fred Drake3b5da761998-03-12 15:33:05 +0000133\var{method}.
Fred Drakefc576191998-04-04 07:15:02 +0000134\end{methoddesc}
Guido van Rossuma10768a1997-11-18 15:11:22 +0000135
Fred Drakefc576191998-04-04 07:15:02 +0000136\begin{methoddesc}{handle_data}{data}
Guido van Rossuma10768a1997-11-18 15:11:22 +0000137This method is called to process arbitrary data. It is intended to be
138overridden by a derived class; the base class implementation does
139nothing.
Fred Drakefc576191998-04-04 07:15:02 +0000140\end{methoddesc}
Guido van Rossuma10768a1997-11-18 15:11:22 +0000141
Fred Drakefc576191998-04-04 07:15:02 +0000142\begin{methoddesc}{handle_charref}{ref}
Guido van Rossuma10768a1997-11-18 15:11:22 +0000143This method is called to process a character reference of the form
Fred Drake7f6e2c41998-02-13 14:38:23 +0000144\samp{\&\#\var{ref};}. \var{ref} can either be a decimal number,
Fred Drakefc576191998-04-04 07:15:02 +0000145or a hexadecimal number when preceded by an \character{x}.
Guido van Rossuma10768a1997-11-18 15:11:22 +0000146In the base implementation, \var{ref} must be a number in the
147range 0-255. It translates the character to \ASCII{} and calls the
Fred Drake3b5da761998-03-12 15:33:05 +0000148method \method{handle_data()} with the character as argument. If
Guido van Rossuma10768a1997-11-18 15:11:22 +0000149\var{ref} is invalid or out of range, the method
150\code{unknown_charref(\var{ref})} is called to handle the error. A
151subclass must override this method to provide support for character
152references outside of the \ASCII{} range.
Fred Drakefc576191998-04-04 07:15:02 +0000153\end{methoddesc}
Guido van Rossuma10768a1997-11-18 15:11:22 +0000154
Fred Drakefc576191998-04-04 07:15:02 +0000155\begin{methoddesc}{handle_comment}{comment}
Guido van Rossuma10768a1997-11-18 15:11:22 +0000156This method is called when a comment is encountered. The
Fred Drake3b5da761998-03-12 15:33:05 +0000157\var{comment} argument is a string containing the text between the
Fred Drake7f6e2c41998-02-13 14:38:23 +0000158\samp{<!--} and \samp{-->} delimiters, but not the delimiters
159themselves. For example, the comment \samp{<!--text-->} will
Guido van Rossuma10768a1997-11-18 15:11:22 +0000160cause this method to be called with the argument \code{'text'}. The
161default method does nothing.
Fred Drakefc576191998-04-04 07:15:02 +0000162\end{methoddesc}
Guido van Rossuma10768a1997-11-18 15:11:22 +0000163
Fred Drakefc576191998-04-04 07:15:02 +0000164\begin{methoddesc}{handle_cdata}{data}
Guido van Rossuma10768a1997-11-18 15:11:22 +0000165This method is called when a CDATA element is encountered. The
Fred Drake3b5da761998-03-12 15:33:05 +0000166\var{data} argument is a string containing the text between the
Fred Drake7f6e2c41998-02-13 14:38:23 +0000167\samp{<![CDATA[} and \samp{]]>} delimiters, but not the delimiters
168themselves. For example, the entity \samp{<![CDATA[text]]>} will
Guido van Rossuma10768a1997-11-18 15:11:22 +0000169cause this method to be called with the argument \code{'text'}. The
Fred Drake3b5da761998-03-12 15:33:05 +0000170default method does nothing, and is intended to be overridden.
Fred Drakefc576191998-04-04 07:15:02 +0000171\end{methoddesc}
Guido van Rossuma10768a1997-11-18 15:11:22 +0000172
Fred Drakefc576191998-04-04 07:15:02 +0000173\begin{methoddesc}{handle_proc}{name, data}
Fred Drake3b5da761998-03-12 15:33:05 +0000174This method is called when a processing instruction (PI) is
175encountered. The \var{name} is the PI target, and the \var{data}
176argument is a string containing the text between the PI target and the
177closing delimiter, but not the delimiter itself. For example, the
178instruction \samp{<?XML text?>} will cause this method to be called
179with the arguments \code{'XML'} and \code{'text'}. The default method
Fred Drakefc576191998-04-04 07:15:02 +0000180does nothing. Note that if a document starts with \samp{<?xml
Guido van Rossumb083a9f1998-12-18 20:17:13 +0000181..?>}, \method{handle_xml()} is called to handle it.
Fred Drakefc576191998-04-04 07:15:02 +0000182\end{methoddesc}
Guido van Rossuma10768a1997-11-18 15:11:22 +0000183
Fred Drakefc576191998-04-04 07:15:02 +0000184\begin{methoddesc}{handle_special}{data}
Guido van Rossuma10768a1997-11-18 15:11:22 +0000185This method is called when a declaration is encountered. The
Fred Drake3b5da761998-03-12 15:33:05 +0000186\var{data} argument is a string containing the text between the
Fred Drake7f6e2c41998-02-13 14:38:23 +0000187\samp{<!} and \samp{>} delimiters, but not the delimiters
188themselves. For example, the entity \samp{<!ENTITY text>} will
Guido van Rossum02505e41998-01-29 14:55:24 +0000189cause this method to be called with the argument \code{'ENTITY text'}. The
Fred Drakefc576191998-04-04 07:15:02 +0000190default method does nothing. Note that \samp{<!DOCTYPE ...>} is
Guido van Rossum02505e41998-01-29 14:55:24 +0000191handled separately if it is located at the start of the document.
Fred Drakefc576191998-04-04 07:15:02 +0000192\end{methoddesc}
Guido van Rossuma10768a1997-11-18 15:11:22 +0000193
Fred Drakefc576191998-04-04 07:15:02 +0000194\begin{methoddesc}{syntax_error}{message}
Guido van Rossuma10768a1997-11-18 15:11:22 +0000195This method is called when a syntax error is encountered. The
Fred Drake3b5da761998-03-12 15:33:05 +0000196\var{message} is a description of what was wrong. The default method
197raises a \exception{RuntimeError} exception. If this method is
198overridden, it is permissable for it to return. This method is only
199called when the error can be recovered from. Unrecoverable errors
200raise a \exception{RuntimeError} without first calling
201\method{syntax_error()}.
Fred Drakefc576191998-04-04 07:15:02 +0000202\end{methoddesc}
Guido van Rossuma10768a1997-11-18 15:11:22 +0000203
Fred Drakefc576191998-04-04 07:15:02 +0000204\begin{methoddesc}{unknown_starttag}{tag, attributes}
Guido van Rossuma10768a1997-11-18 15:11:22 +0000205This method is called to process an unknown start tag. It is intended
206to be overridden by a derived class; the base class implementation
207does nothing.
Fred Drakefc576191998-04-04 07:15:02 +0000208\end{methoddesc}
Guido van Rossuma10768a1997-11-18 15:11:22 +0000209
Fred Drakefc576191998-04-04 07:15:02 +0000210\begin{methoddesc}{unknown_endtag}{tag}
Guido van Rossuma10768a1997-11-18 15:11:22 +0000211This method is called to process an unknown end tag. It is intended
212to be overridden by a derived class; the base class implementation
213does nothing.
Fred Drakefc576191998-04-04 07:15:02 +0000214\end{methoddesc}
Guido van Rossuma10768a1997-11-18 15:11:22 +0000215
Fred Drakefc576191998-04-04 07:15:02 +0000216\begin{methoddesc}{unknown_charref}{ref}
Guido van Rossuma10768a1997-11-18 15:11:22 +0000217This method is called to process unresolvable numeric character
218references. It is intended to be overridden by a derived class; the
219base class implementation does nothing.
Fred Drakefc576191998-04-04 07:15:02 +0000220\end{methoddesc}
Guido van Rossuma10768a1997-11-18 15:11:22 +0000221
Fred Drakefc576191998-04-04 07:15:02 +0000222\begin{methoddesc}{unknown_entityref}{ref}
Guido van Rossuma10768a1997-11-18 15:11:22 +0000223This method is called to process an unknown entity reference. It is
224intended to be overridden by a derived class; the base class
Guido van Rossume7f19201999-08-26 15:57:44 +0000225implementation calls \method{syntax_error()} to signal an error.
Fred Drakefc576191998-04-04 07:15:02 +0000226\end{methoddesc}
Guido van Rossuma10768a1997-11-18 15:11:22 +0000227
Fred Drake34250111999-02-19 23:45:06 +0000228
Fred Drakec8c40ff1999-04-22 20:16:02 +0000229\begin{seealso}
Fred Drake38e5d272000-04-03 20:13:55 +0000230 \seetext{The XML specification, published by the World Wide Web
231 Consortium (W3C), is available online at
232 \url{http://www.w3.org/TR/REC-xml}. References to
233 additional material on XML are available at
234 \url{http://www.w3.org/XML/}.}
235
Fred Drakec8c40ff1999-04-22 20:16:02 +0000236 \seetext{The Python XML Topic Guide provides a great deal of information
237 on using XML from Python and links to other sources of information
238 on XML. It's located on the Web at
239 \url{http://www.python.org/topics/xml/}.}
240
241 \seetext{The Python XML Special Interest Group is developing substantial
242 support for processing XML from Python. See
243 \url{http://www.python.org/sigs/xml-sig/} for more information.}
244\end{seealso}
245
246
Fred Drake34250111999-02-19 23:45:06 +0000247\subsection{XML Namespaces \label{xml-namespace}}
Guido van Rossuma10768a1997-11-18 15:11:22 +0000248
Guido van Rossumb083a9f1998-12-18 20:17:13 +0000249This module has support for XML namespaces as defined in the XML
250Namespaces proposed recommendation.
Fred Drake34250111999-02-19 23:45:06 +0000251\indexii{XML}{namespaces}
Guido van Rossuma10768a1997-11-18 15:11:22 +0000252
Guido van Rossumb083a9f1998-12-18 20:17:13 +0000253Tag and attribute names that are defined in an XML namespace are
254handled as if the name of the tag or element consisted of the
255namespace (i.e. the URL that defines the namespace) followed by a
256space and the name of the tag or attribute. For instance, the tag
257\code{<html xmlns='http://www.w3.org/TR/REC-html40'>} is treated as if
258the tag name was \code{'http://www.w3.org/TR/REC-html40 html'}, and
259the tag \code{<html:a href='http://frob.com'>} inside the above
260mentioned element is treated as if the tag name were
261\code{'http://www.w3.org/TR/REC-html40 a'} and the attribute name as
262if it were \code{'http://www.w3.org/TR/REC-html40 src'}.
Guido van Rossum02505e41998-01-29 14:55:24 +0000263
Guido van Rossumb083a9f1998-12-18 20:17:13 +0000264An older draft of the XML Namespaces proposal is also recognized, but
265triggers a warning.