blob: 2dbb69502c0f906e8e8592fd74319b47cc0b52a3 [file] [log] [blame]
Fred Drakee85c3502000-06-29 19:28:01 +00001"""W3C Document Object Model implementation for Python.
2
Fred Drake6bcf4c22000-12-11 22:29:23 +00003The Python mapping of the Document Object Model is documented in the
4Python Library Reference in the section on the xml.dom package.
Fred Drakee85c3502000-06-29 19:28:01 +00005
6This package contains the following modules:
7
8minidom -- A simple implementation of the Level 1 DOM with namespace
Fred Drake6bcf4c22000-12-11 22:29:23 +00009 support added (based on the Level 2 specification) and other
10 minor Level 2 functionality.
11
12pulldom -- DOM builder supporting on-demand tree-building for selected
13 subtrees of the document.
Fred Drakee85c3502000-06-29 19:28:01 +000014
15"""
Fred Drake6bcf4c22000-12-11 22:29:23 +000016
17
18class Node:
19 """Class giving the NodeType constants."""
20
21 # DOM implementations may use this as a base class for their own
22 # Node implementations. If they don't, the constants defined here
23 # should still be used as the canonical definitions as they match
24 # the values given in the W3C recommendation. Client code can
25 # safely refer to these values in all tests of Node.nodeType
26 # values.
27
28 ELEMENT_NODE = 1
29 ATTRIBUTE_NODE = 2
30 TEXT_NODE = 3
31 CDATA_SECTION_NODE = 4
32 ENTITY_REFERENCE_NODE = 5
33 ENTITY_NODE = 6
34 PROCESSING_INSTRUCTION_NODE = 7
35 COMMENT_NODE = 8
36 DOCUMENT_NODE = 9
37 DOCUMENT_TYPE_NODE = 10
38 DOCUMENT_FRAGMENT_NODE = 11
39 NOTATION_NODE = 12
Martin v. Löwis64acf1d2000-12-13 14:21:07 +000040
Fred Drake5d1b5ea2000-12-13 16:35:53 +000041
Martin v. Löwis64acf1d2000-12-13 14:21:07 +000042#ExceptionCode
43INDEX_SIZE_ERR = 1
44DOMSTRING_SIZE_ERR = 2
45HIERARCHY_REQUEST_ERR = 3
46WRONG_DOCUMENT_ERR = 4
47INVALID_CHARACTER_ERR = 5
48NO_DATA_ALLOWED_ERR = 6
49NO_MODIFICATION_ALLOWED_ERR = 7
50NOT_FOUND_ERR = 8
51NOT_SUPPORTED_ERR = 9
52INUSE_ATTRIBUTE_ERR = 10
53INVALID_STATE_ERR = 11
54SYNTAX_ERR = 12
55INVALID_MODIFICATION_ERR = 13
56NAMESPACE_ERR = 14
57INVALID_ACCESS_ERR = 15
58
Fred Drake5d1b5ea2000-12-13 16:35:53 +000059
Martin v. Löwis64acf1d2000-12-13 14:21:07 +000060class DOMException(Exception):
61 """Abstract base class for DOM exceptions.
62 Exceptions with specific codes are specializations of this class."""
Martin v. Löwis52ce0d02001-01-27 08:47:37 +000063
Fred Drake5d1b5ea2000-12-13 16:35:53 +000064 def __init__(self, *args, **kw):
65 if self.__class__ is DOMException:
66 raise RuntimeError(
Fred Drakef16527c2000-12-15 23:56:43 +000067 "DOMException should not be instantiated directly")
Fred Drake279aa6c2000-12-15 21:07:59 +000068 apply(Exception.__init__, (self,) + args, kw)
Fred Drake5d1b5ea2000-12-13 16:35:53 +000069
Fred Drakeb6a44252001-02-19 14:57:02 +000070 def _get_code(self):
71 return self.code
72
Martin v. Löwis64acf1d2000-12-13 14:21:07 +000073
74class IndexSizeErr(DOMException):
75 code = INDEX_SIZE_ERR
76
77class DomstringSizeErr(DOMException):
78 code = DOMSTRING_SIZE_ERR
79
80class HierarchyRequestErr(DOMException):
81 code = HIERARCHY_REQUEST_ERR
82
83class WrongDocumentErr(DOMException):
84 code = WRONG_DOCUMENT_ERR
85
86class InvalidCharacterErr(DOMException):
87 code = INVALID_CHARACTER_ERR
88
89class NoDataAllowedErr(DOMException):
90 code = NO_DATA_ALLOWED_ERR
91
92class NoModificationAllowedErr(DOMException):
93 code = NO_MODIFICATION_ALLOWED_ERR
94
95class NotFoundErr(DOMException):
96 code = NOT_FOUND_ERR
97
98class NotSupportedErr(DOMException):
99 code = NOT_SUPPORTED_ERR
100
101class InuseAttributeErr(DOMException):
102 code = INUSE_ATTRIBUTE_ERR
103
104class InvalidStateErr(DOMException):
105 code = INVALID_STATE_ERR
106
107class SyntaxErr(DOMException):
108 code = SYNTAX_ERR
109
110class InvalidModificationErr(DOMException):
111 code = INVALID_MODIFICATION_ERR
112
113class NamespaceErr(DOMException):
114 code = NAMESPACE_ERR
115
116class InvalidAccessErr(DOMException):
117 code = INVALID_ACCESS_ERR