Changeset 180 for Xml/xsd-fu/trunk/generateDS/generateDS.py
- Timestamp:
- 05/29/08 18:12:08 (7 months ago)
- Files:
-
- 1 modified
-
Xml/xsd-fu/trunk/generateDS/generateDS.py (modified) (66 diffs)
Legend:
- Unmodified
- Added
- Removed
-
Xml/xsd-fu/trunk/generateDS/generateDS.py
r179 r180  13 13 -s <subclassfilename> Output file name for subclasses 14 14 -p <prefix> Prefix string to be pre-pended to the class names 15  -n <mappingfilename> Transform names with table in mappingfilename.Â16 15 -f Force creation of output files. Do not ask. 17 16 -a <namespaceabbrev> Namespace abbreviation, e.g. "xsd:". … …  29 28 instead of get_var() and set_var(). 30 29 --user-methods= <module>, 31  -u <module Optional module containing user methods. See 30 -u <module> Optional module containing user methods. See 32 31 section "User Methods" in the documentation.  32 --no-process-includes Do not process included XML Schema files. By  33 default, generateDS.py will insert content  34 from files referenced by <include ... />  35 elements into the XML Schema to be processed. 33 36 """ 34 37  … …  69 72 import xml.sax.xmlreader 70 73 import logging  74 import keyword  75 import StringIO 71 76  72 77 # Default logger configuration … …  99 104 SaxElementDict = {} 100 105 Force = 0  106   107 NamespacesDict = {}  108 Targetnamespace = ""  109   110 ##NameTable = {  111 ## 'class': 'klass',  112 ## 'import': 'emport',  113 ## 'type': 'ttype',  114 ## 'pass': 'ppass',  115 ## }  116  101 117 NameTable = { 102  'class': 'klass', 103  'import': 'emport', 104  'type': 'ttype',  118 'type': 'typexx', 105 119 }  120 for kw in keyword.kwlist:  121 NameTable[kw] = '%sxx' % kw  122   123  106 124 SubclassSuffix = 'Sub' 107 125 RootElement = None … …  117 135 UserMethodsPath = None 118 136 UserMethodsModule = None  137 XsdNameSpace = '' 119 138  120 139 def set_type_constants(nameSpace): … …  129 148 DateTimeType, DateType, \ 130 149 ComplexContentType, ExtensionType, \ 131  IDType, IDREFType, IDREFSType, \  150 IDType, IDREFType, IDREFSType, IDTypes, \  151 NameType, NCNameType, QNameType, NameTypes, \ 132 152 AnyAttributeType, SimpleTypeType, RestrictionType, \ 133  WhiteSpaceType, ListType, EnumerationType, UnionType  153 WhiteSpaceType, ListType, EnumerationType, UnionType, \  154 OtherSimpleTypes 134 155 AttributeGroupType = nameSpace + 'attributeGroup' 135 156 AttributeType = nameSpace + 'attribute' … …  165 186 IDREFType = nameSpace + 'IDREF' 166 187 IDType = nameSpace + 'ID'  188 IDTypes = (IDREFSType, IDREFType, IDType, ) 167 189 SchemaType = nameSpace + 'schema' 168 190 SequenceType = nameSpace + 'sequence' … …  173 195 ) 174 196 TokenType = nameSpace + 'token'  197 NameType = nameSpace + 'Name'  198 NCNameType = nameSpace + 'NCName'  199 QNameType = nameSpace + 'QName'  200 NameTypes = (NameType, NCNameType, QNameType, ) 175 201 ListType = nameSpace + 'list' 176 202 EnumerationType = nameSpace + 'enumeration' 177 203 UnionType = nameSpace + 'union'  204 OtherSimpleTypes = (  205 nameSpace + 'ENTITIES',  206 nameSpace + 'ENTITY',  207 nameSpace + 'ID',  208 nameSpace + 'IDREF',  209 nameSpace + 'IDREFS',  210 nameSpace + 'NCName',  211 nameSpace + 'NMTOKEN',  212 nameSpace + 'NMTOKENS',  213 nameSpace + 'NOTATION',  214 nameSpace + 'Name',  215 nameSpace + 'QName',  216 nameSpace + 'anyURI',  217 nameSpace + 'base64Binary',  218 nameSpace + 'boolean',  219 nameSpace + 'byte',  220 nameSpace + 'date',  221 nameSpace + 'dateTime',  222 nameSpace + 'decimal',  223 nameSpace + 'double',  224 nameSpace + 'duration',  225 nameSpace + 'float',  226 nameSpace + 'gDay',  227 nameSpace + 'gMonth',  228 nameSpace + 'gMonthDay',  229 nameSpace + 'gYear',  230 nameSpace + 'gYearMonth',  231 nameSpace + 'hexBinary',  232 nameSpace + 'int',  233 nameSpace + 'integer',  234 nameSpace + 'language',  235 nameSpace + 'long',  236 nameSpace + 'negativeInteger',  237 nameSpace + 'nonNegativeInteger',  238 nameSpace + 'nonPositiveInteger',  239 nameSpace + 'normalizedString',  240 nameSpace + 'positiveInteger',  241 nameSpace + 'short',  242 nameSpace + 'string',  243 nameSpace + 'time',  244 nameSpace + 'token',  245 nameSpace + 'unsignedByte',  246 nameSpace + 'unsignedInt',  247 nameSpace + 'unsignedLong',  248 nameSpace + 'unsignedShort',  249 ) 178 250  179 251  … …  253 325 name_val = strip_namespace(self.attrs['name']) 254 326 if 'type' in self.attrs: 255  type_val = self.attrs['type']  327 if self.attrs['type'].startswith(XsdNameSpace):  328 type_val = self.attrs['type']  329 else:  330 type_val = strip_namespace(self.attrs['type']) 256 331 if 'ref' in self.attrs: 257 332 ref_val = strip_namespace(self.attrs['ref']) … …  268 343 if ref_val: 269 344 self.attrs['ref'] = ref_val  345 self.default = self.attrs.get('default') 270 346 self.name = name_val 271 347 self.children = [] … …  353 429 def setSimpleType(self, simpleType): self.simpleType = simpleType 354 430 def getSimpleType(self): return self.simpleType.getName()  431 def setDefault(self, default): self.default = default  432 def getDefault(self): return self.default 355 433  356 434 def show(self, outfile, level): … …  703 781  704 782 class XschemaAttribute(object): 705  def __init__(self, name, data_type='xs:string', use='optional' ): 783 def __init__(self, name, data_type='xs:string', use='optional', default=None): 706 784 self.name = name 707 785 self.data_type = data_type 708 786 self.use = use  787 self.default = default 709 788 # Enumeration values for the attribute. 710 789 self.values = list() … …  715 794 def setUse(self, use): self.use = use 716 795 def getUse(self): return self.use  796 def setDefault(self, default): self.default = default  797 def getDefault(self): return self.default 717 798 # end class XschemaAttribute 718 799  … …  752 833 print msg 753 834 sys.exit(-1) 754   755  def findLastXschemaElement(self): 756  """ 757  Traverses the current stack of elements to find the first instance 758  of XschemaElement. 759  """ 760  element = None 761  reverse = list(self.stack) 762  reverse.reverse() 763  for entry in reverse: 764  if isinstance(entry, XschemaElement): 765  element = entry 766  return element 767    835  768 836 def startElement(self, name, attrs):  837 global Targetnamespace, NamespacesDict 769 838 logging.debug("Start element: %s %s" % (name, repr(attrs.items()))) 770 839 logging.debug("Stack: %s" % self.stack) … …  780 849 # use that namespace prefix. 781 850 for name, value in attrs.items(): 782  if name[:6] == 'xmlns:' and \ 783  value == 'http://www.w3.org/2001/XMLSchema':  851 if name[:6] == 'xmlns:': 784 852 nameSpace = name[6:] + ':' 785  set_type_constants(nameSpace)  853 if value == 'http://www.w3.org/2001/XMLSchema':  854 set_type_constants(nameSpace)  855 NamespacesDict[value] = nameSpace  856 elif name == 'targetNamespace':  857 Targetnamespace = value  858  786 859 elif name == ElementType or ((name == ComplexTypeType) and (len(self.stack) == 1)): 787 860 self.inElement = 1 … …  832 905 else: 833 906 use = 'optional'  907 if 'default' in attrs.keys():  908 default = attrs['default']  909 else:  910 default = None 834 911 if self.stack[-1].attributeGroup: 835 912 # Add this attribute to a current attributeGroup. 836  attribute = XschemaAttribute(name, data_type, use ) 913 attribute = XschemaAttribute(name, data_type, use, default) 837 914 self.stack[-1].attributeGroup.add(name, attribute) 838 915 else: 839 916 # Add this attribute to the element/complexType. 840  attribute = XschemaAttribute(name, data_type, use ) 917 attribute = XschemaAttribute(name, data_type, use, default) 841 918 self.stack[-1].attributeDefs[name] = attribute 842 919 self.lastAttribute = attribute … …  863 940 extensionBase = attrs['base'] 864 941 if extensionBase in StringType or \  942 extensionBase in IDTypes or \  943 extensionBase in NameTypes or \ 865 944 extensionBase == TokenType or \ 866 945 extensionBase == DateTimeType or \ … …  874 953 extensionBase == BooleanType or \ 875 954 extensionBase == FloatType or \ 876  extensionBase == DoubleType:  955 extensionBase == DoubleType or \  956 extensionBase in OtherSimpleTypes: 877 957 pass 878 958 else: … …  915 995 # in the stack. We search backwards through the stack to 916 996 # find the last element. 917  element = self.findLastXschemaElement()  997 element = None  998 if self.stack:  999 for entry in reversed(self.stack):  1000 if isinstance(entry, XschemaElement):  1001 element = entry 918 1002 if element is None: 919 1003 sys.stderr.write( … …  1022 1106 # 1023 1107  1024  def generateExportFn_1(outfile, child, name, fill): 1108 def generateExportFn_1(outfile, child, name, namespace, fill): 1025 1109 cleanName = cleanupName(name) 1026 1110 mappedName = mapName(cleanName) … …  1031 1115 s1 = '%s showIndent(outfile, level)\n' % fill 1032 1116 outfile.write(s1) 1033  s1 = "%s outfile.write('<%s >%%s</%s>\\n' %% quote_xml(self.get%s()))\n" % \Â1034  (fill, name , name, make_gs_name(cleanName)) 1117 s1 = "%s outfile.write('<%s%s>%%s</%s%s>\\n' %% quote_xml(self.get%s()))\n" % \  1118 (fill, namespace, name, namespace, name, make_gs_name(cleanName)) 1035 1119 outfile.write(s1) 1036 1120 elif child.getType() in IntegerType or \ … …  1042 1126 s1 = '%s showIndent(outfile, level)\n' % fill 1043 1127 outfile.write(s1) 1044  s1 = "%s outfile.write('<%s >%%d</%s>\\n' %% self.get%s())\n" % \Â1045  (fill, name , name, make_gs_name(cleanName)) 1128 s1 = "%s outfile.write('<%s%s>%%d</%s%s>\\n' %% self.get%s())\n" % \  1129 (fill, namespace, name, namespace, name, make_gs_name(cleanName)) 1046 1130 outfile.write(s1) 1047 1131 elif child.getType() == FloatType or \ … …  1049 1133 s1 = '%s showIndent(outfile, level)\n' % fill 1050 1134 outfile.write(s1) 1051  s1 = "%s outfile.write('<%s >%%f</%s>\\n' %% self.get%s())\n" % \Â1052  (fill, name , name, make_gs_name(cleanName)) 1135 s1 = "%s outfile.write('<%s%s>%%f</%s%s>\\n' %% self.get%s())\n" % \  1136 (fill, namespace, name, namespace, name, make_gs_name(cleanName)) 1053 1137 outfile.write(s1) 1054 1138 elif child.getType() == DoubleType: 1055 1139 s1 = '%s showIndent(outfile, level)\n' % fill 1056 1140 outfile.write(s1) 1057  s1 = "%s outfile.write('<%s >%%e</%s>\\n' %% self.get%s())\n" % \Â1058  (fill, name , name, make_gs_name(cleanName)) 1141 s1 = "%s outfile.write('<%s%s>%%e</%s%s>\\n' %% self.get%s())\n" % \  1142 (fill, namespace, name, namespace, name, make_gs_name(cleanName)) 1059 1143 outfile.write(s1) 1060 1144 else: … …  1065 1149 (fill, mappedName) 1066 1150 else: 1067  s1 = "%s self.%s.export(outfile, level, name_='%s' )\n" % \Â1068  (fill, mappedName, name )Â1069  outfile.write(s1) Â1070   1071   1072  def generateExportFn_2(outfile, child, name, fill): 1151 s1 = "%s self.%s.export(outfile, level, name_='%s', namespace_='%s')\n" % \  1152 (fill, mappedName, name, namespace)  1153 outfile.write(s1)  1154   1155   1156 def generateExportFn_2(outfile, child, name, namespace, fill): 1073 1157 cleanName = cleanupName(name) 1074 1158 mappedName = mapName(cleanName) … …  1081 1165 s1 = '%s showIndent(outfile, level)\n' % fill 1082 1166 outfile.write(s1) 1083  s1 = "%s outfile.write('<%s >%%s</%s>\\n' %% quote_xml(%s_))\n" % \Â1084  (fill, name , name, cleanName,) 1167 s1 = "%s outfile.write('<%s%s>%%s</%s%s>\\n' %% quote_xml(%s_))\n" % \  1168 (fill, namespace, name, namespace, name, cleanName,) 1085 1169 outfile.write(s1) 1086 1170 elif child.getType() in IntegerType or \ … …  1092 1176 s1 = '%s showIndent(outfile, level)\n' % fill 1093 1177 outfile.write(s1) 1094  s1 = "%s outfile.write('<%s >%%d</%s>\\n' %% %s_)\n" % \Â1095  (fill, name , name, cleanName, ) 1178 s1 = "%s outfile.write('<%s%s>%%d</%s%s>\\n' %% %s_)\n" % \  1179 (fill, namespace, name, namespace, name, cleanName, ) 1096 1180 outfile.write(s1) 1097 1181 elif child.getType() == FloatType or \ … …  1099 1183 s1 = '%s showIndent(outfile, level)\n' % fill 1100 1184 outfile.write(s1) 1101  s1 = "%s outfile.write('<%s >%%f</%s>\\n' %% %s_)\n" % \Â1102  (fill, name , name, cleanName, ) 1185 s1 = "%s outfile.write('<%s%s>%%f</%s%s>\\n' %% %s_)\n" % \  1186 (fill, namespace, name, namespace, name, cleanName, ) 1103 1187 outfile.write(s1) 1104 1188 elif child.getType() == DoubleType: 1105 1189 s1 = '%s showIndent(outfile, level)\n' % fill 1106 1190 outfile.write(s1) 1107  s1 = "%s outfile.write('<%s >%%e</%s>\\n' %% %s_)\n" % \Â1108  (fill, name , name, cleanName) 1191 s1 = "%s outfile.write('<%s%s>%%e</%s%s>\\n' %% %s_)\n" % \  1192 (fill, namespace, name, namespace, name, cleanName) 1109 1193 outfile.write(s1) 1110 1194 else: … …  1112 1196 s1 = "%s %s_.export(outfile, level)\n" % (fill, mappedName) 1113 1197 else: 1114  s1 = "%s %s_.export(outfile, level, name_='%s' )\n" % \Â1115  (fill, mappedName, cleanName, )Â1116  outfile.write(s1) Â1117   1118   1119  def generateExportFn_3(outfile, child, name, fill): 1198 s1 = "%s %s_.export(outfile, level, name_='%s', namespace_='%s')\n" % \  1199 (fill, mappedName, cleanName, namespace)  1200 outfile.write(s1)  1201   1202   1203 def generateExportFn_3(outfile, child, name, namespace, fill): 1120 1204 cleanName = cleanupName(name) 1121 1205 mappedName = mapName(cleanName) … …  1127 1211 child.getType() == DateTimeType or \ 1128 1212 child.getType() == DateType: 1129  s1 = '%s showIndent(outfile, level)\n' % fill 1130  outfile.write(s1) 1131  s1 = "%s outfile.write('<%s>%%s</%s>\\n' %% quote_xml(self.get%s()))\n" % \ 1132  (fill, name, name, make_gs_name(cleanName))  1213 s1 = '%s if self.get%s() != "" :\n' % (  1214 fill, make_gs_name(cleanName))  1215 outfile.write(s1)  1216 s1 = '%s showIndent(outfile, level)\n' % fill  1217 outfile.write(s1)  1218 s1 = "%s outfile.write('<%s%s>%%s</%s%s>\\n' %% quote_xml(self.get%s()))\n" % \  1219 (fill, namespace, name, namespace, name, make_gs_name(cleanName)) 1133 1220 outfile.write(s1) 1134 1221 elif child.getType() in IntegerType or \ … …  1140 1227 s1 = '%s showIndent(outfile, level)\n' % fill 1141 1228 outfile.write(s1) 1142  s1 = "%s outfile.write('<%s >%%d</%s>\\n' %% self.get%s())\n" % \Â1143  (fill, name , name, make_gs_name(cleanName)) 1229 s1 = "%s outfile.write('<%s%s>%%d</%s%s>\\n' %% self.get%s())\n" % \  1230 (fill, namespace, name, namespace, name, make_gs_name(cleanName)) 1144 1231 outfile.write(s1) 1145 1232 elif child.getType() == FloatType or \ … …  1147 1234 s1 = '%s showIndent(outfile, level)\n' % fill 1148 1235 outfile.write(s1) 1149  s1 = "%s outfile.write('<%s >%%f</%s>\\n' %% self.get%s())\n" % \Â1150  (fill, name , name, make_gs_name(cleanName)) 1236 s1 = "%s outfile.write('<%s%s>%%f</%s%s>\\n' %% self.get%s())\n" % \  1237 (fill, namespace, name, namespace, name, make_gs_name(cleanName)) 1151 1238 outfile.write(s1) 1152 1239 elif child.getType() == DoubleType: 1153 1240 s1 = '%s showIndent(outfile, level)\n' % fill 1154 1241 outfile.write(s1) 1155  s1 = "%s outfile.write('<%s >%%e</%s>\\n' %% self.get%s())\n" % \Â1156  (fill, name , name, make_gs_name(cleanName)) 1242 s1 = "%s outfile.write('<%s%s>%%e</%s%s>\\n' %% self.get%s())\n" % \  1243 (fill, namespace, name, namespace, name, make_gs_name(cleanName)) 1157 1244 outfile.write(s1) 1158 1245 else: … …  1163 1250 (fill, mappedName) 1164 1251 else: 1165  s1 = "%s self.%s.export(outfile, level, name_='%s' )\n" % \Â1166  (fill, mappedName, name ) 1252 s1 = "%s self.%s.export(outfile, level, name_='%s', namespace_='%s')\n" % \  1253 (fill, mappedName, name, namespace) 1167 1254 outfile.write(s1) 1168 1255  … …  1180 1267 s1 = " if self.get%s() is not None:\n" % (capName, ) 1181 1268 outfile.write(s1) 1182  s1 = " outfile.write(' %s=\"%%s\"' %% ( self.get%s(), ))\n" % \ 1269 s1 = " outfile.write(' %s=\"%%s\"' %% (quote_attrib(self.get%s()), ))\n" % \ 1183 1270 (name, capName, ) 1184 1271 outfile.write(s1) 1185 1272 else: 1186  s1 = " outfile.write(' %s=\"%%s\"' %% ( self.get%s(), ))\n" % \ 1273 s1 = " outfile.write(' %s=\"%%s\"' %% (quote_attrib(self.get%s()), ))\n" % \ 1187 1274 (name, capName, ) 1188 1275 outfile.write(s1) … …  1190 1277 s1 = ' for name, value in self.anyAttributes_.items():\n' 1191 1278 outfile.write(s1) 1192  s1 = " outfile.write(' %s=\"%s\"' % (name, value, ))\n" 1279 s1 = " outfile.write(' %s=\"%s\"' % (name, quote_attrib(value), ))\n" 1193 1280 outfile.write(s1) 1194 1281 return hasAttributes 1195 1282  1196 1283  1197  def generateExportChildren(outfile, element, hasChildren ): 1284 def generateExportChildren(outfile, element, hasChildren, namespace): 1198 1285 if len(element.getChildren()) > 0: 1199 1286 hasChildren += 1 … …  1201 1288 s1 = " for item_ in self.content_:\n" 1202 1289 outfile.write(s1) 1203  s1 = " item_.export(outfile, level, name_ )\n" 1290 s1 = " item_.export(outfile, level, name_, namespace_)\n" 1204 1291 outfile.write(s1) 1205 1292 else: … …  1207 1294 name = child.getName() 1208 1295 if child.getMaxOccurs() > 1: 1209  generateExportFn_2(outfile, child, name, ' ') 1296 generateExportFn_2(outfile, child, name, namespace, ' ') 1210 1297 else: 1211 1298 if (child.getOptional()): 1212  generateExportFn_3(outfile, child, name, '') 1299 generateExportFn_3(outfile, child, name, namespace, '') 1213 1300 else: 1214  generateExportFn_1(outfile, child, name, '') 1301 generateExportFn_1(outfile, child, name, namespace, '') 1215 1302 ## base = element.getBase() 1216 1303 ## if base and base in ElementDict: … …  1229 1316  1230 1317  1231  def generateExportFn(outfile, prefix, element ): 1318 def generateExportFn(outfile, prefix, element, namespace): 1232 1319 childCount = countChildren(element, 0) 1233 1320 base = element.getBase() 1234  s1 = " def export(self, outfile, level, name_='%s' ):\n" % \Â1235  element.getName() 1321 s1 = " def export(self, outfile, level, name_='%s', namespace_='%s'):\n" % \  1322 (element.getName(), namespace) 1236 1323 outfile.write(s1) 1237 1324 s1 = ' showIndent(outfile, level)\n' 1238 1325 outfile.write(s1) 1239 1326 if len(element.getAttributeDefs()) > 0 or element.getAnyAttribute(): 1240  s1 = " outfile.write('<%s ' % (name_,))\n"Â1241  outfile.write(s1) Â1242   1243  s1 = " self.exportAttributes(outfile, level, name_='%s' )\n" % \Â1244  element.getName() 1327 s1 = " outfile.write('<%s%s' % (namespace_, name_))\n"  1328 outfile.write(s1)  1329   1330 s1 = " self.exportAttributes(outfile, level, name_='%s', namespace_='%s')\n" % \  1331 (element.getName(), namespace) 1245 1332 outfile.write(s1) 1246 1333 if element.isMixed() or childCount == 0: … …  1251 1338 else: 1252 1339 if element.isMixed() or childCount == 0: 1253  s1 = " outfile.write('<%s >' % name_)\n"Â1254  else: Â1255  s1 = " outfile.write('<%s >\\n' % name_)\n"Â1256  outfile.write(s1) Â1257   1258  s1 = " self.exportChildren(outfile, level + 1, name_ )\n" 1340 s1 = " outfile.write('<%s%s>' % (namespace_, name_))\n"  1341 else:  1342 s1 = " outfile.write('<%s%s>\\n' % (namespace_, name_))\n"  1343 outfile.write(s1)  1344   1345 s1 = " self.exportChildren(outfile, level + 1, name_, namespace_)\n" 1259 1346 outfile.write(s1) 1260 1347 if element.isMixed() or childCount == 0: 1261  s1 = " outfile.write('</%s >\\n' % name_)\n" 1348 s1 = " outfile.write('</%s%s>\\n' % (namespace_, name_))\n" 1262 1349 outfile.write(s1) 1263 1350 else: 1264 1351 s1 = ' showIndent(outfile, level)\n' 1265 1352 outfile.write(s1) 1266  s1 = " outfile.write('</%s >\\n' % name_)\n"Â1267  outfile.write(s1) Â1268  s1 = " def exportAttributes(self, outfile, level, name_='%s' ):\n" % \Â1269  element.getName() 1353 s1 = " outfile.write('</%s%s>\\n' % (namespace_, name_))\n"  1354 outfile.write(s1)  1355 s1 = " def exportAttributes(self, outfile, level, name_='%s', namespace_='%s'):\n" % \  1356 (element.getName(), namespace) 1270 1357 outfile.write(s1) 1271 1358 hasAttributes = 0 … …  1273 1360 if base and base not in SimpleTypeDict: 1274 1361 hasAttributes += 1 1275  s1 = " %s.exportAttributes(self, outfile, level, name_='%s' )\n" % \Â1276  (base, element.getName(), ) 1362 s1 = " %s.exportAttributes(self, outfile, level, name_='%s', namespace_='%s')\n" % \  1363 (base, element.getName(), namespace) 1277 1364 outfile.write(s1) 1278 1365 if hasAttributes == 0: … …  1282 1369 ## s1 = ' showIndent(outfile, level)\n' 1283 1370 ## outfile.write(s1) 1284  s1 = " def exportChildren(self, outfile, level, name_='%s' ):\n" % \Â1285  element.getName() 1371 s1 = " def exportChildren(self, outfile, level, name_='%s', namespace_='%s'):\n" % \  1372 (element.getName(), namespace) 1286 1373 outfile.write(s1) 1287 1374 hasChildren = 0 1288  hasChildren = generateExportChildren(outfile, element, hasChildren ) 1375 hasChildren = generateExportChildren(outfile, element, hasChildren, namespace) 1289 1376 if base and base not in SimpleTypeDict: 1290 1377 hasChildren += 1 1291  s1 = " %s.exportChildren(self, outfile, level, name_ )\n" % (base, ) 1378 s1 = " %s.exportChildren(self, outfile, level, name_, namespace_)\n" % (base, ) 1292 1379 outfile.write(s1) 1293 1380 if childCount == 0: 1294  s1 = " outfile.write( self.valueOf_)\n" 1381 s1 = " outfile.write(quote_xml(self.valueOf_))\n" 1295 1382 outfile.write(s1) 1296 1383 # end generateExportFn … … Â
