summaryrefslogtreecommitdiffstats
path: root/xml/dom/minitraversal.py
blob: 5dbaf51128785ca7a1f9c222c9d481508ef49d58 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
"""A DOM implementation that offers traversal and ranges on top of
minidom, using the 4DOM traversal implementation."""

import minidom

class DOMImplementation(minidom.DOMImplementation):
    # Augment the features table instead of duplicating the logic in
    # hasFeature().
    _features = minidom.DOMImplementation._features + [
        ("traversal", "1.0"),
        ("traversal", "2.0"),
        ("traversal", None),
        ("range", "1.0"),
        ("range", "2.0"),
        ("range", None),
        ]

    def _create_document(self):
        return Document()

class Document(minidom.Document):
    implementation = DOMImplementation()

    def createNodeIterator(self, root, whatToShow, filter,
                           entityReferenceExpansion):
        from xml.dom.NodeIterator import NodeIterator
        return NodeIterator(root, whatToShow, filter, entityReferenceExpansion)

    def createTreeWalker(self, root, whatToShow, filter,
                         entityReferenceExpansion):
        from TreeWalker import TreeWalker
        return TreeWalker(root, whatToShow, filter, entityReferenceExpansion)

    def createRange(self):
        from Range import Range
        return Range(self)

def getDOMImplementation():
    return Document.implementation