Changeset 2075 for TI02-CSML/trunk/csml


Ignore:
Timestamp:
30/01/07 08:21:34 (13 years ago)
Author:
domlowe
Message:

recursion handled better in schema checking

File:
1 edited

Legend:

Unmodified
Added
Removed
  • TI02-CSML/trunk/csml/csml2Moles/molesReadWrite.py

    r2074 r2075  
    2626                            seqlist.append(subelem.attrib['name']) 
    2727            self.sequences[molesname]=seqlist 
     28         
     29        def __checkSubElem(elem): 
     30            for subelem in elem[:]: 
     31                if subelem.tag=='{http://www.w3.org/2001/XMLSchema}sequence': 
     32                    __addSequence(molesclassname,subelem) 
     33                    __checkSubElem(subelem) 
     34         
     35        def __checkDeepSubElem(elem): 
     36            for subelem in elem[:]: 
     37                if subelem.tag == '{http://www.w3.org/2001/XMLSchema}complexType': 
     38                    for subsubelem in subelem[:]: 
     39                        if subsubelem.tag=='{http://www.w3.org/2001/XMLSchema}sequence': 
     40                            __addSequence(molesclassname,subsubelem) 
     41                            __checkDeepSubElem(subsubelem)     
    2842 
    2943        for event, elem in ET.iterparse(schema): 
     
    3448                    if elem.attrib['name'][-4:]=='Type': 
    3549                        molesclassname=molesclassname[:-4] 
    36                     for subelem in elem[:]: 
    37                         if subelem.tag=='{http://www.w3.org/2001/XMLSchema}sequence': 
    38                             __addSequence(molesclassname,subelem) 
    39                             for subsubelem in subelem[:]: 
    40                                 if subsubelem.tag=='{http://www.w3.org/2001/XMLSchema}sequence': 
    41                                     __addSequence(molesclassname,subsubelem) 
     50                    __checkSubElem(elem)                     
    4251 
    4352            if elem.tag == '{http://www.w3.org/2001/XMLSchema}element': 
     
    4655                if elem.attrib.has_key('name'): 
    4756                    molesclassname= elem.attrib['name'] 
    48                     for subelem in elem[:]: 
    49                         if subelem.tag == '{http://www.w3.org/2001/XMLSchema}complexType': 
    50                             for subsubelem in subelem[:]: 
    51                                 if subsubelem.tag=='{http://www.w3.org/2001/XMLSchema}sequence': 
    52                                     __addSequence(molesclassname,subsubelem) 
     57                    __checkDeepSubElem(elem) 
    5358 
    5459            '''this bit handles the use of types. If some element has a name and a type attribute then if that type is complex it has 
     
    7782            order = [] 
    7883            for key in dict: 
    79                 #print key 
     84                #print key error 
     85                print 'KEY ERROR %s'%classname 
    8086                if key is not 'schema': 
    8187                    if key is not 'ns': 
Note: See TracChangeset for help on using the changeset viewer.