Browse Source

----------------------------------------------------------------------


			
			main
		
Joshua Boverhof 20 years ago
parent
commit
7e246f51b9
1 changed files with 77 additions and 9 deletions
  1. +77
    -9
      XMLSchema.py

+ 77
- 9
XMLSchema.py View File

@@ -346,6 +346,11 @@ class ComplexMarker:
"""
pass

class LocalMarker:
"""marker for complex type information
"""
pass


class MarkerInterface:
def isDefinition(self):
@@ -384,6 +389,9 @@ class MarkerInterface:
def isComplex(self):
return isinstance(self, ComplexMarker)

def isLocal(self):
return isinstance(self, LocalMarker)


##########################################################
# Schema Components
@@ -1203,6 +1211,7 @@ class AttributeDeclaration(XMLSchemaComponent,\

class LocalAttributeDeclaration(AttributeDeclaration,\
AttributeMarker,\
LocalMarker,\
DeclarationMarker):
"""<attribute name>
parent:
@@ -1348,6 +1357,9 @@ class AttributeGroupDefinition(XMLSchemaComponent,\
self.annotation = None
self.attr_content = None

def getAttributeContent(self):
return self.attr_content

def fromDom(self, node):
self.setAttributes(node)
contents = self.getContents(node)
@@ -1637,7 +1649,8 @@ class ElementDeclaration(XMLSchemaComponent,\
self.constraints = tuple(constraints)


class LocalElementDeclaration(ElementDeclaration):
class LocalElementDeclaration(ElementDeclaration,\
LocalMarker):
"""<element>
parents:
all, choice, sequence
@@ -2039,6 +2052,9 @@ class ComplexType(XMLSchemaComponent,\
self.content = None
self.attr_content = None

def getAttributeContent(self):
return self.attr_content

def fromDom(self, node):
self.setAttributes(node)
contents = self.getContents(node)
@@ -2154,6 +2170,15 @@ class ComplexType(XMLSchemaComponent,\
contents = {'xsd':['annotation', 'group', 'all', 'choice',\
'sequence', 'attribute', 'attributeGroup', 'anyAttribute']}

def __init__(self, parent):
XMLSchemaComponent.__init__(self, parent)
self.annotation = None
self.content = None
self.attr_content = None

def getAttributeContent(self):
return self.attr_content

def fromDom(self, node):
self.setAttributes(node)
contents = self.getContents(node)
@@ -2276,6 +2301,9 @@ class ComplexType(XMLSchemaComponent,\
XMLSchemaComponent.__init__(self, parent)
self.annotation = None
self.attr_content = None
def getAttributeContent(self):
return self.attr_content

def fromDom(self, node):
self.setAttributes(node)
@@ -2332,8 +2360,54 @@ class ComplexType(XMLSchemaComponent,\
contents = {'xsd':['annotation', 'simpleType', 'attribute',\
'attributeGroup', 'anyAttribute'] + RestrictionMarker.facets}

def __init__(self, parent):
XMLSchemaComponent.__init__(self, parent)
self.annotation = None
self.content = None
self.attr_content = None
def getAttributeContent(self):
return self.attr_content

def fromDom(self, node):
self.content = []
self.setAttributes(node)
contents = self.getContents(node)

indx = 0
num = len(contents)
component = SplitQName(contents[indx].getTagName())[1]
if component == 'annotation':
self.annotation = Annotation(self)
self.annotation.fromDom(contents[indx])
indx += 1
component = SplitQName(contents[indx].getTagName())[1]

content = []
while indx < num:
component = SplitQName(contents[indx].getTagName())[1]
if component == 'attribute':
if contents[indx].hasattr('ref'):
content.append(AttributeReference(self))
else:
content.append(LocalAttributeDeclaration(self))
elif component == 'attributeGroup':
content.append(AttributeGroupReference(self))
elif component == 'anyAttribute':
content.append(AttributeWildCard(self))
elif component == 'simpleType':
self.content.append(LocalSimpleType(self))
self.content[-1].fromDom(contents[indx])
else:
raise SchemaError, 'Unknown component (%s)'\
%(contents[indx].getTagName())
content[-1].fromDom(contents[indx])
indx += 1
self.attr_content = tuple(content)


class LocalComplexType(ComplexType):
class LocalComplexType(ComplexType,\
LocalMarker):
"""<complexType>
parents:
element
@@ -2375,7 +2449,6 @@ class SimpleType(XMLSchemaComponent,\
XMLSchemaComponent.__init__(self, parent)
self.annotation = None
self.content = None
self.attr_content = None

def fromDom(self, node):
self.setAttributes(node)
@@ -2422,13 +2495,11 @@ class SimpleType(XMLSchemaComponent,\
XMLSchemaComponent.__init__(self, parent)
self.annotation = None
self.content = None
self.attr_content = None

def fromDom(self, node):
self.setAttributes(node)
contents = self.getContents(node)
content = []
self.attr_content = []

for indx in range(len(contents)):
component = SplitQName(contents[indx].getTagName())[1]
@@ -2461,17 +2532,16 @@ class SimpleType(XMLSchemaComponent,\
attributes = {'id':None,
'memberTypes':None }
contents = {'xsd':['annotation', 'simpleType']}

def __init__(self, parent):
XMLSchemaComponent.__init__(self, parent)
self.annotation = None
self.content = None
self.attr_content = None

def fromDom(self, node):
self.setAttributes(node)
contents = self.getContents(node)
content = []
self.attr_content = []

for indx in range(len(contents)):
component = SplitQName(contents[indx].getTagName())[1]
@@ -2503,13 +2573,11 @@ class SimpleType(XMLSchemaComponent,\
XMLSchemaComponent.__init__(self, parent)
self.annotation = None
self.content = None
self.attr_content = None

def fromDom(self, node):
self.setAttributes(node)
contents = self.getContents(node)
self.content = []
self.attr_content = []

for indx in range(len(contents)):
component = SplitQName(contents[indx].getTagName())[1]


Loading…
Cancel
Save