Home | History | Annotate | Download | only in dom
      1 """W3C Document Object Model implementation for Python.
      2 
      3 The Python mapping of the Document Object Model is documented in the
      4 Python Library Reference in the section on the xml.dom package.
      5 
      6 This package contains the following modules:
      7 
      8 minidom -- A simple implementation of the Level 1 DOM with namespace
      9            support added (based on the Level 2 specification) and other
     10            minor Level 2 functionality.
     11 
     12 pulldom -- DOM builder supporting on-demand tree-building for selected
     13            subtrees of the document.
     14 
     15 """
     16 
     17 
     18 class 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
     40 
     41 
     42 #ExceptionCode
     43 INDEX_SIZE_ERR                 = 1
     44 DOMSTRING_SIZE_ERR             = 2
     45 HIERARCHY_REQUEST_ERR          = 3
     46 WRONG_DOCUMENT_ERR             = 4
     47 INVALID_CHARACTER_ERR          = 5
     48 NO_DATA_ALLOWED_ERR            = 6
     49 NO_MODIFICATION_ALLOWED_ERR    = 7
     50 NOT_FOUND_ERR                  = 8
     51 NOT_SUPPORTED_ERR              = 9
     52 INUSE_ATTRIBUTE_ERR            = 10
     53 INVALID_STATE_ERR              = 11
     54 SYNTAX_ERR                     = 12
     55 INVALID_MODIFICATION_ERR       = 13
     56 NAMESPACE_ERR                  = 14
     57 INVALID_ACCESS_ERR             = 15
     58 VALIDATION_ERR                 = 16
     59 
     60 
     61 class DOMException(Exception):
     62     """Abstract base class for DOM exceptions.
     63     Exceptions with specific codes are specializations of this class."""
     64 
     65     def __init__(self, *args, **kw):
     66         if self.__class__ is DOMException:
     67             raise RuntimeError(
     68                 "DOMException should not be instantiated directly")
     69         Exception.__init__(self, *args, **kw)
     70 
     71     def _get_code(self):
     72         return self.code
     73 
     74 
     75 class IndexSizeErr(DOMException):
     76     code = INDEX_SIZE_ERR
     77 
     78 class DomstringSizeErr(DOMException):
     79     code = DOMSTRING_SIZE_ERR
     80 
     81 class HierarchyRequestErr(DOMException):
     82     code = HIERARCHY_REQUEST_ERR
     83 
     84 class WrongDocumentErr(DOMException):
     85     code = WRONG_DOCUMENT_ERR
     86 
     87 class InvalidCharacterErr(DOMException):
     88     code = INVALID_CHARACTER_ERR
     89 
     90 class NoDataAllowedErr(DOMException):
     91     code = NO_DATA_ALLOWED_ERR
     92 
     93 class NoModificationAllowedErr(DOMException):
     94     code = NO_MODIFICATION_ALLOWED_ERR
     95 
     96 class NotFoundErr(DOMException):
     97     code = NOT_FOUND_ERR
     98 
     99 class NotSupportedErr(DOMException):
    100     code = NOT_SUPPORTED_ERR
    101 
    102 class InuseAttributeErr(DOMException):
    103     code = INUSE_ATTRIBUTE_ERR
    104 
    105 class InvalidStateErr(DOMException):
    106     code = INVALID_STATE_ERR
    107 
    108 class SyntaxErr(DOMException):
    109     code = SYNTAX_ERR
    110 
    111 class InvalidModificationErr(DOMException):
    112     code = INVALID_MODIFICATION_ERR
    113 
    114 class NamespaceErr(DOMException):
    115     code = NAMESPACE_ERR
    116 
    117 class InvalidAccessErr(DOMException):
    118     code = INVALID_ACCESS_ERR
    119 
    120 class ValidationErr(DOMException):
    121     code = VALIDATION_ERR
    122 
    123 class UserDataHandler:
    124     """Class giving the operation constants for UserDataHandler.handle()."""
    125 
    126     # Based on DOM Level 3 (WD 9 April 2002)
    127 
    128     NODE_CLONED   = 1
    129     NODE_IMPORTED = 2
    130     NODE_DELETED  = 3
    131     NODE_RENAMED  = 4
    132 
    133 XML_NAMESPACE = "http://www.w3.org/XML/1998/namespace"
    134 XMLNS_NAMESPACE = "http://www.w3.org/2000/xmlns/"
    135 XHTML_NAMESPACE = "http://www.w3.org/1999/xhtml"
    136 EMPTY_NAMESPACE = None
    137 EMPTY_PREFIX = None
    138 
    139 from domreg import getDOMImplementation,registerDOMImplementation
    140