Changeset 168 for Xml/xsd-fu/trunk/generateDS/generateDS.py
- Timestamp:
- 04/11/08 13:59:39 (8 months ago)
- Files:
-
- 1 modified
-
Xml/xsd-fu/trunk/generateDS/generateDS.py (modified) (8 diffs)
Legend:
- Unmodified
- Added
- Removed
-
Xml/xsd-fu/trunk/generateDS/generateDS.py
r112 r168 204 204 205 205 206 class XschemaElementBase :206 class XschemaElementBase(object): 207 207 def __init__(self): 208 208 pass … … 667 667 668 668 669 class XschemaAttributeGroup :669 class XschemaAttributeGroup(object): 670 670 def __init__(self, name='', group=None): 671 671 self.name = name … … 695 695 # end class XschemaAttributeGroup 696 696 697 class XschemaAttribute :697 class XschemaAttribute(object): 698 698 def __init__(self, name, data_type='xs:string', use='optional'): 699 699 self.name = name … … 871 871 SimpleTypeDict[stName] = element 872 872 self.stack.append(element) 873 self.inSimpleType = 1873 self.inSimpleType += 1 874 874 elif name == RestrictionType: 875 875 # If we are in a simpleType, capture the name of 876 876 # the restriction base. 877 if self.inSimpleType and 'base' in attrs.keys():877 if self.inSimpleType > 0 and 'base' in attrs.keys(): 878 878 self.stack[-1].setBase(attrs['base']) 879 879 self.inRestrictionType = 1 … … 890 890 # find the last element. 891 891 element = None 892 for entry in list(stack).reverse(): 892 reverse = list(self.stack) 893 reverse.reverse() 894 logging.debug("Found enum, reverse stack: %s" % reverse) 895 for entry in reverse: 893 896 if type(entry) == XschemaElement: 894 897 element = entry 895 898 if element is None: 896 899 sys.stderr.write( 897 'Cannot find element to attach enumeration: %s ' % \898 value)900 'Cannot find element to attach enumeration: %s\n' % \ 901 attrs['value']) 899 902 sys.exit(-1) 900 903 element.values.append(attrs['value']) 901 elif self.inSimpleType and attrs.has_key('value'):904 elif self.inSimpleType > 0 and attrs.has_key('value'): 902 905 # We've been defined as a simpleType on our own. 903 906 self.stack[-1].values.append(attrs['value']) … … 920 923 def endElement(self, name): 921 924 logging.debug("End element: %s" % (name)) 922 logging.debug("End element stack : %d" % (len(self.stack)))923 if name == SimpleTypeType and self.inSimpleType :924 self.inSimpleType = 0925 logging.debug("End element stack length: %d" % (len(self.stack))) 926 if name == SimpleTypeType and self.inSimpleType > 0: 927 self.inSimpleType -= 1 925 928 # If the simpleType is directly off the root, it may be used to 926 929 # qualify the type of many elements and/or attributes so we … … 935 938 self.inNonanonymousComplexType = 0 936 939 element = self.stack.pop() 940 logging.debug("Adding %s as child of %s" % (element, self.stack[-1])) 937 941 self.stack[-1].addChild(element) 938 942 elif name == ComplexTypeType: … … 975 979 pass 976 980 elif name == ListType: 977 # List types are only used with a parent simpleType and can have a978 # simpleType child. So, if we're in a list type we have to be979 # careful to reset the inSimpleType flag otherwise the handler's980 # internal stack will not be unrolled correctly.981 self.inSimpleType = 1982 981 self.inListType = 0 983 982
