File: __init__.py

package info (click to toggle)
python-xml 0.8.4-10.1%2Blenny1
  • links: PTS
  • area: main
  • in suites: lenny
  • size: 4,972 kB
  • ctags: 10,628
  • sloc: python: 46,730; ansic: 14,354; xml: 968; makefile: 201; sh: 20
file content (236 lines) | stat: -rw-r--r-- 6,154 bytes parent folder | download | duplicates (3)
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
########################################################################
#
# File Name:            __init__.py
#
#
"""
WWW: http://4suite.org/4XSLT         e-mail: support@4suite.org

Copyright (c) 2000, 2001 Fourthought Inc, USA.   All Rights Reserved.
See  http://4suite.com/COPYRIGHT  for license and copyright information
"""

XSL_NAMESPACE='http://www.w3.org/1999/XSL/Transform'

import xml.dom
from xml import xpath
from xml.xpath import g_xpathRecognizedNodes

SyntaxException = xpath.SyntaxException
InternalException = SyntaxException # not used

g_extElements = {}
g_xsltRecognizedNodes = g_xpathRecognizedNodes + [xml.dom.Node.DOCUMENT_FRAGMENT_NODE]

# Define ReleaseNode in a DOM-independent way
import xml.dom.ext
import xml.dom.minidom
def _releasenode(n):
    if isinstance(n, xml.dom.minidom.Node):
        n.unlink()
    else:
        xml.dom.ext.ReleaseNode(n)

try:
    from Ft.Lib import pDomlette
    def ReleaseNode(n):
        if isinstance(n, pDomlette.Node):
            pDomlette.ReleaseNode(n)
        else:
            _releasenode(n)
    _XsltElementBase = pDomlette.Element
except ImportError:
    ReleaseNode = _releasenode
    from minisupport import _XsltElementBase

def RegisterExtensionModules(moduleNames, moduleList=g_extElements):
    mod_names = moduleNames[:]
    mods = []
    for mod_name in mod_names:
        module_used = 0
        if mod_name:
            mod = __import__(mod_name, {}, {}, ['ExtElements', 'ExtFunctions'])
            if hasattr(mod, 'ExtFunctions'):
                xpath.g_extFunctions.update(mod.ExtFunctions)
                module_used = 1
            if hasattr(mod, 'ExtElements'):
                moduleList.update(mod.ExtElements)
                module_used = 1
            module_used and mods.append(mod)
    return mods


class XsltException(Exception):
    def __init__(self, errorCode, *args):
        self.args = args
        self.errorCode = errorCode
        Exception.__init__(self, MessageSource.g_errorMessages[errorCode]%args)


class XsltElement(_XsltElementBase):
    def __init__(self, doc, uri, localName, prefix, baseUri):
        _XsltElementBase.__init__(self, doc, uri, localName, prefix)
        self.baseUri = baseUri

    def setup(self):
        self._nss = xml.dom.ext.GetAllNs(self)
        return

    def instantiate(self, context, processor):
        for child in self.childNodes:
            if (child.namespaceURI, child.localName) == (XSL_NAMESPACE, 'fallback'):
                child.instantiate(context, processor)
        return (context,)

    def __getinitargs__(self):
        return (None, self.namespaceURI, self.localName, self.prefix, self.baseUri)

    def __getstate__(self):
         base_state = _XsltElementBase.__getstate__(self)
         new_state = (base_state, self.baseUri,)
         return new_state

         return base_state

    def __setstate__(self, state):
        _XsltElementBase.__setstate__(self, state[0])
        self.baseUri = state[1]
        return


class Error:
    INTERNAL_ERROR = 1
    PATTERN_SYNTAX = 2
    PATTERN_SEMANTIC = 3
    NO_STYLESHEET = 4
    AVT_SYNTAX = 5
    STYLESHEET_MISSING_VERSION = 6
    STYLESHEET_MISSING_VERSION_NOTE1 = 7
    STYLESHEET_PARSE_ERROR = 8
    SOURCE_PARSE_ERROR = 9

    TOP_LEVEL_ELEM_WITH_NULL_NS = 10
    XSLT_ILLEGAL_ATTR = 11
    XSLT_ILLEGAL_ELEMENT = 12
    STYLESHEET_ILLEGAL_ROOT = 13
    CIRCULAR_VAR = 14

    WHEN_AFTER_OTHERWISE = 111
    MULTIPLE_OTHERWISE = 112

    APPLYIMPORTS_WITH_NULL_CURR_TPL = 120

    #xsl:import
    ILLEGAL_IMPORT = 130

    #xsl:choose
    ILLEGAL_CHOOSE_CHILD = 140
    CHOOSE_REQUIRES_WHEN_CHILD = 141
    CHOOSE_WHEN_AFTER_OTHERWISE = 142
    CHOOSE_MULTIPLE_OTHERWISE = 143

    #xsl:call-template
    ILLEGAL_CALLTEMPLATE_CHILD = 150

    #xsl:template
    ILLEGAL_TEMPLATE_PRIORITY = 160

    #xsl:attribute
    ATTRIBUTE_ADDED_AFTER_ELEMENT = 170
    ATTRIBUTE_MISSING_NAME = 171

    #xsl:element
    UNDEFINED_ATTRIBUTE_SET = 180

    #xsl:for-each
    INVALID_FOREACH_SELECT = 190

    #xsl:value-of
    VALUEOF_MISSING_SELECT = 200

    #xsl:copy-of
    COPYOF_MISSING_SELECT = 210

    #xsl:text
    ILLEGAL_TEXT_CHILD = 220

    #xsl:apply-template
    ILLEGAL_APPLYTEMPLATE_CHILD = 230

    #xsl:when
    WHEN_MISSING_TEST = 240

    #xsl:attribute-set
    ILLEGAL_ATTRIBUTESET_CHILD = 250
    ATTRIBUTESET_REQUIRES_NAME = 251


    INVALID_PATTERN = 1000
    INVALID_OPERAND_IN_PATTERN = 1001
    INVALID_OPERAND_ID = 1002
    INVALID_OPERAND_SREL = 1003
    INVALID_OPERAND_REL = 1004
    INVALID_OPERAND_IDREL = 1005
    INVALID_LEFT_OR_RIGHT_OPERAND_S = 1006
    INVALID_LEFT_OR_RIGHT_OPERAND_RELP = 1007
    INVALID_AXIS_SPEC = 1008
    INVALID_NODE_TEST = 1009
    INVALID_PREDICATE_LIST = 1010

    ILLEGAL_SORT_DATA_TYPE_VALUE = 2010
    ILLEGAL_SORT_CASE_ORDER_VALUE = 2011
    ILLEGAL_SORT_ORDER_VALUE = 2012
    
    ILLEGAL_NUMBER_GROUPING_SIZE_VALUE = 2020
    ILLEGAL_NUMBER_LEVEL_VALUE = 2021
    ILLEGAL_NUMBER_LETTER_VALUE_VALUE = 2022
    ILLEGAL_NUMBER_FORMAT_VALUE = 2023

    INVALID_NAMESPACE_ALIAS = 2030

    WRONG_NUMBER_OF_ARGUMENTS = 5000
    WRONG_ARGUMENT_TYPE = 5001

    RESTRICTED_OUTPUT_VIOLATION = 7000

    FEATURE_NOT_SUPPORTED = 9999

    STYLESHEET_REQUESTED_TERMINATION = 10000


class OutputParameters:
    def __init__(self):
        #Initialize with defaults according to spec
        self.method = None
        self.version = "1.0"
        self.encoding = ""
        self.omitXmlDeclaration = 'no'
        self.standalone = None
        self.doctypeSystem = ''
        self.doctypePublic = ''
        self.mediaType = None
        self.cdataSectionElements = []
        self.indent = None


g_registered = 0

def Register():
    import os,string
    from xml.xslt import XsltFunctions, BuiltInExtElements
    xpath.g_extFunctions.update(XsltFunctions.ExtFunctions)
    if os.environ.has_key('EXTMODULES'):
        RegisterExtensionModules(
            string.split(os.environ["EXTMODULES"], ':')
            )
    g_extElements.update(BuiltInExtElements.ExtElements)
    global g_registered
    g_registered = 1

def Init():
    pass

Init()

import MessageSource