Added some simple sample apps
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@9492 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
736
wxPython/samples/stxview/StructuredText/STDOM.py
Normal file
736
wxPython/samples/stxview/StructuredText/STDOM.py
Normal file
@@ -0,0 +1,736 @@
|
||||
##############################################################################
|
||||
#
|
||||
# Zope Public License (ZPL) Version 1.0
|
||||
# -------------------------------------
|
||||
#
|
||||
# Copyright (c) Digital Creations. All rights reserved.
|
||||
#
|
||||
# This license has been certified as Open Source(tm).
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions are
|
||||
# met:
|
||||
#
|
||||
# 1. Redistributions in source code must retain the above copyright
|
||||
# notice, this list of conditions, and the following disclaimer.
|
||||
#
|
||||
# 2. Redistributions in binary form must reproduce the above copyright
|
||||
# notice, this list of conditions, and the following disclaimer in
|
||||
# the documentation and/or other materials provided with the
|
||||
# distribution.
|
||||
#
|
||||
# 3. Digital Creations requests that attribution be given to Zope
|
||||
# in any manner possible. Zope includes a "Powered by Zope"
|
||||
# button that is installed by default. While it is not a license
|
||||
# violation to remove this button, it is requested that the
|
||||
# attribution remain. A significant investment has been put
|
||||
# into Zope, and this effort will continue if the Zope community
|
||||
# continues to grow. This is one way to assure that growth.
|
||||
#
|
||||
# 4. All advertising materials and documentation mentioning
|
||||
# features derived from or use of this software must display
|
||||
# the following acknowledgement:
|
||||
#
|
||||
# "This product includes software developed by Digital Creations
|
||||
# for use in the Z Object Publishing Environment
|
||||
# (http://www.zope.org/)."
|
||||
#
|
||||
# In the event that the product being advertised includes an
|
||||
# intact Zope distribution (with copyright and license included)
|
||||
# then this clause is waived.
|
||||
#
|
||||
# 5. Names associated with Zope or Digital Creations must not be used to
|
||||
# endorse or promote products derived from this software without
|
||||
# prior written permission from Digital Creations.
|
||||
#
|
||||
# 6. Modified redistributions of any form whatsoever must retain
|
||||
# the following acknowledgment:
|
||||
#
|
||||
# "This product includes software developed by Digital Creations
|
||||
# for use in the Z Object Publishing Environment
|
||||
# (http://www.zope.org/)."
|
||||
#
|
||||
# Intact (re-)distributions of any official Zope release do not
|
||||
# require an external acknowledgement.
|
||||
#
|
||||
# 7. Modifications are encouraged but must be packaged separately as
|
||||
# patches to official Zope releases. Distributions that do not
|
||||
# clearly separate the patches from the original work must be clearly
|
||||
# labeled as unofficial distributions. Modifications which do not
|
||||
# carry the name Zope may be packaged in any form, as long as they
|
||||
# conform to all of the clauses above.
|
||||
#
|
||||
#
|
||||
# Disclaimer
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY DIGITAL CREATIONS ``AS IS'' AND ANY
|
||||
# EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL DIGITAL CREATIONS OR ITS
|
||||
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
|
||||
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
|
||||
# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
# SUCH DAMAGE.
|
||||
#
|
||||
#
|
||||
# This software consists of contributions made by Digital Creations and
|
||||
# many individuals on behalf of Digital Creations. Specific
|
||||
# attributions are listed in the accompanying credits file.
|
||||
#
|
||||
##############################################################################
|
||||
"""
|
||||
DOM implementation in StructuredText : Read-Only methods
|
||||
|
||||
All standard Zope objects support DOM to a limited extent.
|
||||
"""
|
||||
import string
|
||||
|
||||
|
||||
# Node type codes
|
||||
# ---------------
|
||||
|
||||
ELEMENT_NODE = 1
|
||||
ATTRIBUTE_NODE = 2
|
||||
TEXT_NODE = 3
|
||||
CDATA_SECTION_NODE = 4
|
||||
ENTITY_REFERENCE_NODE = 5
|
||||
ENTITY_NODE = 6
|
||||
PROCESSING_INSTRUCTION_NODE = 7
|
||||
COMMENT_NODE = 8
|
||||
DOCUMENT_NODE = 9
|
||||
DOCUMENT_TYPE_NODE = 10
|
||||
DOCUMENT_FRAGMENT_NODE = 11
|
||||
NOTATION_NODE = 12
|
||||
|
||||
# Exception codes
|
||||
# ---------------
|
||||
|
||||
INDEX_SIZE_ERR = 1
|
||||
DOMSTRING_SIZE_ERR = 2
|
||||
HIERARCHY_REQUEST_ERR = 3
|
||||
WRONG_DOCUMENT_ERR = 4
|
||||
INVALID_CHARACTER_ERR = 5
|
||||
NO_DATA_ALLOWED_ERR = 6
|
||||
NO_MODIFICATION_ALLOWED_ERR = 7
|
||||
NOT_FOUND_ERR = 8
|
||||
NOT_SUPPORTED_ERR = 9
|
||||
INUSE_ATTRIBUTE_ERR = 10
|
||||
|
||||
# Exceptions
|
||||
# ----------
|
||||
|
||||
class DOMException(Exception):
|
||||
pass
|
||||
class IndexSizeException(DOMException):
|
||||
code = INDEX_SIZE_ERR
|
||||
class DOMStringSizeException(DOMException):
|
||||
code = DOMSTRING_SIZE_ERR
|
||||
class HierarchyRequestException(DOMException):
|
||||
code = HIERARCHY_REQUEST_ERR
|
||||
class WrongDocumentException(DOMException):
|
||||
code = WRONG_DOCUMENT_ERR
|
||||
class InvalidCharacterException(DOMException):
|
||||
code = INVALID_CHARACTER_ERR
|
||||
class NoDataAllowedException(DOMException):
|
||||
code = NO_DATA_ALLOWED_ERR
|
||||
class NoModificationAllowedException(DOMException):
|
||||
code = NO_MODIFICATION_ALLOWED_ERR
|
||||
class NotFoundException(DOMException):
|
||||
code = NOT_FOUND_ERR
|
||||
class NotSupportedException(DOMException):
|
||||
code = NOT_SUPPORTED_ERR
|
||||
class InUseAttributeException(DOMException):
|
||||
code = INUSE_ATTRIBUTE_ERR
|
||||
|
||||
# Node classes
|
||||
# ------------
|
||||
|
||||
class ParentNode:
|
||||
"""
|
||||
A node that can have children, or, more precisely, that implements
|
||||
the child access methods of the DOM.
|
||||
"""
|
||||
|
||||
def getChildNodes(self, type=type, st=type('')):
|
||||
"""
|
||||
Returns a NodeList that contains all children of this node.
|
||||
If there are no children, this is a empty NodeList
|
||||
"""
|
||||
|
||||
r=[]
|
||||
for n in self.getChildren():
|
||||
if type(n) is st: n=TextNode(n)
|
||||
r.append(n.__of__(self))
|
||||
|
||||
return NodeList(r)
|
||||
|
||||
def getFirstChild(self, type=type, st=type('')):
|
||||
"""
|
||||
The first child of this node. If there is no such node
|
||||
this returns None
|
||||
"""
|
||||
children = self.getChildren()
|
||||
|
||||
if not children:
|
||||
return None
|
||||
|
||||
n=chidren[0]
|
||||
|
||||
if type(n) is st:
|
||||
n=TextNode(n)
|
||||
|
||||
return n.__of__(self)
|
||||
|
||||
def getLastChild(self, type=type, st=type('')):
|
||||
"""
|
||||
The last child of this node. If there is no such node
|
||||
this returns None.
|
||||
"""
|
||||
children = self.getChildren()
|
||||
if not children: return None
|
||||
n=chidren[-1]
|
||||
if type(n) is st: n=TextNode(n)
|
||||
return n.__of__(self)
|
||||
|
||||
"""
|
||||
create aliases for all above functions in the pythony way.
|
||||
"""
|
||||
|
||||
def _get_ChildNodes(self, type=type, st=type('')):
|
||||
return self.getChildNodes(type,st)
|
||||
|
||||
def _get_FirstChild(self, type=type, st=type('')):
|
||||
return self.getFirstChild(type,st)
|
||||
|
||||
def _get_LastChild(self, type=type, st=type('')):
|
||||
return self.getLastChild(type,st)
|
||||
|
||||
class NodeWrapper(ParentNode):
|
||||
"""
|
||||
This is an acquisition-like wrapper that provides parent access for
|
||||
DOM sans circular references!
|
||||
"""
|
||||
|
||||
def __init__(self, aq_self, aq_parent):
|
||||
self.aq_self=aq_self
|
||||
self.aq_parent=aq_parent
|
||||
|
||||
def __getattr__(self, name):
|
||||
return getattr(self.aq_self, name)
|
||||
|
||||
def getParentNode(self):
|
||||
"""
|
||||
The parent of this node. All nodes except Document
|
||||
DocumentFragment and Attr may have a parent
|
||||
"""
|
||||
return self.aq_parent
|
||||
|
||||
def _getDOMIndex(self, children, getattr=getattr):
|
||||
i=0
|
||||
self=self.aq_self
|
||||
for child in children:
|
||||
if getattr(child, 'aq_self', child) is self:
|
||||
self._DOMIndex=i
|
||||
return i
|
||||
i=i+1
|
||||
return None
|
||||
|
||||
def getPreviousSibling(self,
|
||||
type=type,
|
||||
st=type(''),
|
||||
getattr=getattr,
|
||||
None=None):
|
||||
|
||||
"""
|
||||
The node immediately preceding this node. If
|
||||
there is no such node, this returns None.
|
||||
"""
|
||||
|
||||
children = self.aq_parent.getChildren()
|
||||
if not children:
|
||||
return None
|
||||
|
||||
index=getattr(self, '_DOMIndex', None)
|
||||
if index is None:
|
||||
index=self._getDOMIndex(children)
|
||||
if index is None: return None
|
||||
|
||||
index=index-1
|
||||
if index < 0: return None
|
||||
try: n=children[index]
|
||||
except IndexError: return None
|
||||
else:
|
||||
if type(n) is st:
|
||||
n=TextNode(n)
|
||||
n._DOMIndex=index
|
||||
return n.__of__(self)
|
||||
|
||||
|
||||
def getNextSibling(self, type=type, st=type('')):
|
||||
"""
|
||||
The node immediately preceding this node. If
|
||||
there is no such node, this returns None.
|
||||
"""
|
||||
children = self.aq_parent.getChildren()
|
||||
if not children:
|
||||
return None
|
||||
|
||||
index=getattr(self, '_DOMIndex', None)
|
||||
if index is None:
|
||||
index=self._getDOMIndex(children)
|
||||
if index is None:
|
||||
return None
|
||||
|
||||
index=index+1
|
||||
try: n=children[index]
|
||||
except IndexError:
|
||||
return None
|
||||
else:
|
||||
if type(n) is st:
|
||||
n=TextNode(n)
|
||||
n._DOMIndex=index
|
||||
return n.__of__(self)
|
||||
|
||||
def getOwnerDocument(self):
|
||||
"""
|
||||
The Document object associated with this node, if any.
|
||||
"""
|
||||
return self.aq_parent.getOwnerDocument()
|
||||
|
||||
"""
|
||||
create aliases for all above functions in the pythony way.
|
||||
"""
|
||||
|
||||
def _get_ParentNode(self):
|
||||
return self.getParentNode()
|
||||
|
||||
def _get_DOMIndex(self, children, getattr=getattr):
|
||||
return self._getDOMIndex(children,getattr)
|
||||
|
||||
def _get_PreviousSibling(self,
|
||||
type=type,
|
||||
st=type(''),
|
||||
getattr=getattr,
|
||||
None=None):
|
||||
|
||||
return self.getPreviousSibling(type,st,getattr,None)
|
||||
|
||||
def _get_NextSibling(self, type=type, st=type('')):
|
||||
return self.getNextSibling(type,st)
|
||||
|
||||
def _get_OwnerDocument(self):
|
||||
return self.getOwnerDocument()
|
||||
|
||||
class Node(ParentNode):
|
||||
"""
|
||||
Node Interface
|
||||
"""
|
||||
|
||||
# Get a DOM wrapper with a parent link
|
||||
def __of__(self, parent):
|
||||
return NodeWrapper(self, parent)
|
||||
|
||||
# DOM attributes
|
||||
# --------------
|
||||
|
||||
def getNodeName(self):
|
||||
"""
|
||||
The name of this node, depending on its type
|
||||
"""
|
||||
|
||||
def getNodeValue(self):
|
||||
"""
|
||||
The value of this node, depending on its type
|
||||
"""
|
||||
return None
|
||||
|
||||
def getParentNode(self):
|
||||
"""
|
||||
The parent of this node. All nodes except Document
|
||||
DocumentFragment and Attr may have a parent
|
||||
"""
|
||||
|
||||
def getChildren(self):
|
||||
"""
|
||||
Get a Python sequence of children
|
||||
"""
|
||||
return ()
|
||||
|
||||
def getPreviousSibling(self,
|
||||
type=type,
|
||||
st=type(''),
|
||||
getattr=getattr,
|
||||
None=None):
|
||||
"""
|
||||
The node immediately preceding this node. If
|
||||
there is no such node, this returns None.
|
||||
"""
|
||||
|
||||
def getNextSibling(self, type=type, st=type('')):
|
||||
"""
|
||||
The node immediately preceding this node. If
|
||||
there is no such node, this returns None.
|
||||
"""
|
||||
|
||||
def getAttributes(self):
|
||||
"""
|
||||
Returns a NamedNodeMap containing the attributes
|
||||
of this node (if it is an element) or None otherwise.
|
||||
"""
|
||||
return None
|
||||
|
||||
def getOwnerDocument(self):
|
||||
"""
|
||||
The Document object associated with this node, if any.
|
||||
"""
|
||||
|
||||
# DOM Methods
|
||||
# -----------
|
||||
|
||||
def hasChildNodes(self):
|
||||
"""
|
||||
Returns true if the node has any children, false
|
||||
if it doesn't.
|
||||
"""
|
||||
return len(self.getChildren())
|
||||
|
||||
"""
|
||||
create aliases for all above functions in the pythony way.
|
||||
"""
|
||||
|
||||
def _get_NodeName(self):
|
||||
return self.getNodeName()
|
||||
|
||||
def _get_NodeValue(self):
|
||||
return self.getNodeValue()
|
||||
|
||||
def _get_ParentNode(self):
|
||||
return self.getParentNode()
|
||||
|
||||
def _get_Children(self):
|
||||
return self.getChildren()
|
||||
|
||||
def _get_PreviousSibling(self,
|
||||
type=type,
|
||||
st=type(''),
|
||||
getattr=getattr,
|
||||
None=None):
|
||||
|
||||
return self.getPreviousSibling(type,st,getattr,None)
|
||||
|
||||
def _get_NextSibling(self, type=type, st=type('')):
|
||||
return self.getNextSibling()
|
||||
|
||||
def _get_Attributes(self):
|
||||
return self.getAttributes()
|
||||
|
||||
def _get_OwnerDocument(self):
|
||||
return self.getOwnerDocument()
|
||||
|
||||
def _has_ChildNodes(self):
|
||||
return self.hasChildNodes()
|
||||
|
||||
|
||||
class TextNode(Node):
|
||||
|
||||
def __init__(self, str): self._value=str
|
||||
|
||||
def getNodeType(self):
|
||||
return TEXT_NODE
|
||||
|
||||
def getNodeName(self):
|
||||
return '#text'
|
||||
|
||||
def getNodeValue(self):
|
||||
return self._value
|
||||
|
||||
"""
|
||||
create aliases for all above functions in the pythony way.
|
||||
"""
|
||||
|
||||
def _get_NodeType(self):
|
||||
return self.getNodeType()
|
||||
|
||||
def _get_NodeName(self):
|
||||
return self.getNodeName()
|
||||
|
||||
def _get_NodeValue(self):
|
||||
return self.getNodeValue()
|
||||
|
||||
class Element(Node):
|
||||
"""
|
||||
Element interface
|
||||
"""
|
||||
|
||||
# Element Attributes
|
||||
# ------------------
|
||||
|
||||
def getTagName(self):
|
||||
"""The name of the element"""
|
||||
return self.__class__.__name__
|
||||
|
||||
def getNodeName(self):
|
||||
"""The name of this node, depending on its type"""
|
||||
return self.__class__.__name__
|
||||
|
||||
def getNodeType(self):
|
||||
"""A code representing the type of the node."""
|
||||
return ELEMENT_NODE
|
||||
|
||||
def getNodeValue(self, type=type, st=type('')):
|
||||
r=[]
|
||||
for c in self.getChildren():
|
||||
if type(c) is not st:
|
||||
c=c.getNodeValue()
|
||||
r.append(c)
|
||||
return string.join(r,'')
|
||||
|
||||
def getParentNode(self):
|
||||
"""
|
||||
The parent of this node. All nodes except Document
|
||||
DocumentFragment and Attr may have a parent
|
||||
"""
|
||||
|
||||
# Element Methods
|
||||
# ---------------
|
||||
|
||||
_attributes=()
|
||||
|
||||
def getAttribute(self, name): return getattr(self, name, None)
|
||||
def getAttributeNode(self, name):
|
||||
if hasattr(self, name):
|
||||
return Attr(name, getattr(self, name))
|
||||
|
||||
def getAttributes(self):
|
||||
d={}
|
||||
for a in self._attributes:
|
||||
d[a]=getattr(self, a, '')
|
||||
return NamedNodeMap(d)
|
||||
|
||||
def getAttribute(self, name):
|
||||
"""Retrieves an attribute value by name."""
|
||||
return None
|
||||
|
||||
def getAttributeNode(self, name):
|
||||
""" Retrieves an Attr node by name or None if
|
||||
there is no such attribute. """
|
||||
return None
|
||||
|
||||
def getElementsByTagName(self, tagname):
|
||||
"""
|
||||
Returns a NodeList of all the Elements with a given tag
|
||||
name in the order in which they would be encountered in a
|
||||
preorder traversal of the Document tree. Parameter: tagname
|
||||
The name of the tag to match (* = all tags). Return Value: A new
|
||||
NodeList object containing all the matched Elements.
|
||||
"""
|
||||
nodeList = []
|
||||
for child in self.getChildren():
|
||||
if (child.getNodeType()==ELEMENT_NODE and \
|
||||
child.getTagName()==tagname or tagname== '*'):
|
||||
|
||||
nodeList.append(child)
|
||||
|
||||
if hasattr(child, 'getElementsByTagName'):
|
||||
n1 = child.getElementsByTagName(tagname)
|
||||
nodeList = nodeList + n1._data
|
||||
return NodeList(nodeList)
|
||||
|
||||
"""
|
||||
create aliases for all above functions in the pythony way.
|
||||
"""
|
||||
|
||||
def _get_TagName(self):
|
||||
return self.getTagName()
|
||||
|
||||
def _get_NodeName(self):
|
||||
return self.getNodeName()
|
||||
|
||||
def _get_NodeType(self):
|
||||
return self.getNodeType()
|
||||
|
||||
def _get_NodeValue(self, type=type, st=type('')):
|
||||
return self.GetNodeValue(type,st)
|
||||
|
||||
def _get_ParentNode(self):
|
||||
return self.getParentNode()
|
||||
|
||||
def _get_Attribute(self, name):
|
||||
return self.getAttribute(name)
|
||||
|
||||
def _get_AttributeNode(self, name):
|
||||
return self.getAttributeNode(name)
|
||||
|
||||
def _get_Attributes(self):
|
||||
return self.getAttributes()
|
||||
|
||||
def _get_Attribute(self, name):
|
||||
return self.getAttribute(name)
|
||||
|
||||
def _get_AttributeNode(self, name):
|
||||
return self.getAttributeNode(name)
|
||||
|
||||
def _get_ElementsByTagName(self, tagname):
|
||||
return self.getElementsByTagName(tagname)
|
||||
|
||||
|
||||
class NodeList:
|
||||
"""
|
||||
NodeList interface - Provides the abstraction of an ordered
|
||||
collection of nodes.
|
||||
|
||||
Python extensions: can use sequence-style 'len', 'getitem', and
|
||||
'for..in' constructs.
|
||||
"""
|
||||
|
||||
def __init__(self,list=None):
|
||||
self._data = list or []
|
||||
|
||||
def __getitem__(self, index, type=type, st=type('')):
|
||||
return self._data[index]
|
||||
|
||||
def __getslice__(self, i, j):
|
||||
return self._data[i:j]
|
||||
|
||||
def item(self, index):
|
||||
"""
|
||||
Returns the index-th item in the collection
|
||||
"""
|
||||
try: return self._data[index]
|
||||
except IndexError: return None
|
||||
|
||||
def getLength(self):
|
||||
"""
|
||||
The length of the NodeList
|
||||
"""
|
||||
return len(self._data)
|
||||
|
||||
__len__=getLength
|
||||
|
||||
"""
|
||||
create aliases for all above functions in the pythony way.
|
||||
"""
|
||||
|
||||
def _get_Length(self):
|
||||
return self.getLength()
|
||||
|
||||
class NamedNodeMap:
|
||||
"""
|
||||
NamedNodeMap interface - Is used to represent collections
|
||||
of nodes that can be accessed by name. NamedNodeMaps are not
|
||||
maintained in any particular order.
|
||||
|
||||
Python extensions: can use sequence-style 'len', 'getitem', and
|
||||
'for..in' constructs, and mapping-style 'getitem'.
|
||||
"""
|
||||
|
||||
def __init__(self, data=None):
|
||||
if data is None:
|
||||
data = {}
|
||||
self._data = data
|
||||
|
||||
def item(self, index):
|
||||
"""
|
||||
Returns the index-th item in the map
|
||||
"""
|
||||
try: return self._data.values()[index]
|
||||
except IndexError: return None
|
||||
|
||||
def __getitem__(self, key):
|
||||
if type(key)==type(1):
|
||||
return self._data.values()[key]
|
||||
else:
|
||||
return self._data[key]
|
||||
|
||||
def getLength(self):
|
||||
"""
|
||||
The length of the NodeList
|
||||
"""
|
||||
return len(self._data)
|
||||
|
||||
__len__ = getLength
|
||||
|
||||
def getNamedItem(self, name):
|
||||
"""
|
||||
Retrieves a node specified by name. Parameters:
|
||||
name Name of a node to retrieve. Return Value A Node (of any
|
||||
type) with the specified name, or None if the specified name
|
||||
did not identify any node in the map.
|
||||
"""
|
||||
if self._data.has_key(name):
|
||||
return self._data[name]
|
||||
return None
|
||||
|
||||
"""
|
||||
create aliases for all above functions in the pythony way.
|
||||
"""
|
||||
def _get_Length(self):
|
||||
return self.getLength()
|
||||
|
||||
def _get_NamedItem(self, name):
|
||||
return self.getNamedItem(name)
|
||||
|
||||
class Attr(Node):
|
||||
"""
|
||||
Attr interface - The Attr interface represents an attriubte in an
|
||||
Element object. Attr objects inherit the Node Interface
|
||||
"""
|
||||
|
||||
def __init__(self, name, value, specified=1):
|
||||
self.name = name
|
||||
self.value = value
|
||||
self.specified = specified
|
||||
|
||||
def getNodeName(self):
|
||||
"""
|
||||
The name of this node, depending on its type
|
||||
"""
|
||||
return self.name
|
||||
|
||||
def getName(self):
|
||||
"""
|
||||
Returns the name of this attribute.
|
||||
"""
|
||||
return self.name
|
||||
|
||||
def getNodeValue(self):
|
||||
"""
|
||||
The value of this node, depending on its type
|
||||
"""
|
||||
return self.value
|
||||
|
||||
def getNodeType(self):
|
||||
"""
|
||||
A code representing the type of the node.
|
||||
"""
|
||||
return ATTRIBUTE_NODE
|
||||
|
||||
def getSpecified(self):
|
||||
"""
|
||||
If this attribute was explicitly given a value in the
|
||||
original document, this is true; otherwise, it is false.
|
||||
"""
|
||||
return self.specified
|
||||
|
||||
"""
|
||||
create aliases for all above functions in the pythony way.
|
||||
"""
|
||||
|
||||
def _get_NodeName(self):
|
||||
return self.getNodeName()
|
||||
|
||||
def _get_Name(self):
|
||||
return self.getName()
|
||||
|
||||
def _get_NodeValue(self):
|
||||
return self.getNodeValue()
|
||||
|
||||
def _get_NodeType(self):
|
||||
return self.getNodeType()
|
||||
|
||||
def _get_Specified(self):
|
||||
return self.getSpecified()
|
Reference in New Issue
Block a user