xmlclass/xsdschema.py
changeset 1740 b789b695b5c6
parent 1739 ec153828ded2
child 1743 c3c3d1318130
equal deleted inserted replaced
1739:ec153828ded2 1740:b789b695b5c6
   507     attrs = []
   507     attrs = []
   508     attrnames = {}
   508     attrnames = {}
   509     if base is not None:
   509     if base is not None:
   510         basetypeinfos = factory.FindSchemaElement(base)
   510         basetypeinfos = factory.FindSchemaElement(base)
   511         if not isinstance(basetypeinfos, (UnicodeType, StringType)) and basetypeinfos["type"] == COMPLEXTYPE:
   511         if not isinstance(basetypeinfos, (UnicodeType, StringType)) and basetypeinfos["type"] == COMPLEXTYPE:
   512             attrnames = dict(map(lambda x:(x["name"], True), basetypeinfos["attributes"]))
   512             attrnames = dict(map(lambda x: (x["name"], True), basetypeinfos["attributes"]))
   513 
   513 
   514     for element in elements:
   514     for element in elements:
   515         if element["type"] == ATTRIBUTE:
   515         if element["type"] == ATTRIBUTE:
   516             if attrnames.get(element["name"], False):
   516             if attrnames.get(element["name"], False):
   517                 raise ValueError("\"%s\" attribute has been defined two times!" % element["name"])
   517                 raise ValueError("\"%s\" attribute has been defined two times!" % element["name"])
  2208     },
  2208     },
  2209 
  2209 
  2210     "long": {
  2210     "long": {
  2211         "type": SIMPLETYPE,
  2211         "type": SIMPLETYPE,
  2212         "basename": "long",
  2212         "basename": "long",
  2213         "extract": GenerateIntegerExtraction(minInclusive=-2**63,maxExclusive=2**63),
  2213         "extract": GenerateIntegerExtraction(minInclusive=-2**63, maxExclusive=2**63),
  2214         "facets": DECIMAL_FACETS,
  2214         "facets": DECIMAL_FACETS,
  2215         "generate": GenerateSimpleTypeXMLText(str),
  2215         "generate": GenerateSimpleTypeXMLText(str),
  2216         "initial": lambda: 0,
  2216         "initial": lambda: 0,
  2217         "check": lambda x: isinstance(x, IntType)
  2217         "check": lambda x: isinstance(x, IntType)
  2218     },
  2218     },
  2219 
  2219 
  2220     "unsignedLong": {
  2220     "unsignedLong": {
  2221         "type": SIMPLETYPE,
  2221         "type": SIMPLETYPE,
  2222         "basename": "unsignedLong",
  2222         "basename": "unsignedLong",
  2223         "extract": GenerateIntegerExtraction(minInclusive=0,maxExclusive=2**64),
  2223         "extract": GenerateIntegerExtraction(minInclusive=0, maxExclusive=2**64),
  2224         "facets": DECIMAL_FACETS,
  2224         "facets": DECIMAL_FACETS,
  2225         "generate": GenerateSimpleTypeXMLText(str),
  2225         "generate": GenerateSimpleTypeXMLText(str),
  2226         "initial": lambda: 0,
  2226         "initial": lambda: 0,
  2227         "check": lambda x: isinstance(x, IntType)
  2227         "check": lambda x: isinstance(x, IntType)
  2228     },
  2228     },
  2229 
  2229 
  2230     "int": {
  2230     "int": {
  2231         "type": SIMPLETYPE,
  2231         "type": SIMPLETYPE,
  2232         "basename": "int",
  2232         "basename": "int",
  2233         "extract": GenerateIntegerExtraction(minInclusive=-2**31,maxExclusive=2**31),
  2233         "extract": GenerateIntegerExtraction(minInclusive=-2**31, maxExclusive=2**31),
  2234         "facets": DECIMAL_FACETS,
  2234         "facets": DECIMAL_FACETS,
  2235         "generate": GenerateSimpleTypeXMLText(str),
  2235         "generate": GenerateSimpleTypeXMLText(str),
  2236         "initial": lambda: 0,
  2236         "initial": lambda: 0,
  2237         "check": lambda x: isinstance(x, IntType)
  2237         "check": lambda x: isinstance(x, IntType)
  2238     },
  2238     },
  2239 
  2239 
  2240     "unsignedInt": {
  2240     "unsignedInt": {
  2241         "type": SIMPLETYPE,
  2241         "type": SIMPLETYPE,
  2242         "basename": "unsignedInt",
  2242         "basename": "unsignedInt",
  2243         "extract": GenerateIntegerExtraction(minInclusive=0,maxExclusive=2**32),
  2243         "extract": GenerateIntegerExtraction(minInclusive=0, maxExclusive=2**32),
  2244         "facets": DECIMAL_FACETS,
  2244         "facets": DECIMAL_FACETS,
  2245         "generate": GenerateSimpleTypeXMLText(str),
  2245         "generate": GenerateSimpleTypeXMLText(str),
  2246         "initial": lambda: 0,
  2246         "initial": lambda: 0,
  2247         "check": lambda x: isinstance(x, IntType)
  2247         "check": lambda x: isinstance(x, IntType)
  2248     },
  2248     },
  2249 
  2249 
  2250     "short": {
  2250     "short": {
  2251         "type": SIMPLETYPE,
  2251         "type": SIMPLETYPE,
  2252         "basename": "short",
  2252         "basename": "short",
  2253         "extract": GenerateIntegerExtraction(minInclusive=-2**15,maxExclusive=2**15),
  2253         "extract": GenerateIntegerExtraction(minInclusive=-2**15, maxExclusive=2**15),
  2254         "facets": DECIMAL_FACETS,
  2254         "facets": DECIMAL_FACETS,
  2255         "generate": GenerateSimpleTypeXMLText(str),
  2255         "generate": GenerateSimpleTypeXMLText(str),
  2256         "initial": lambda: 0,
  2256         "initial": lambda: 0,
  2257         "check": lambda x: isinstance(x, IntType)
  2257         "check": lambda x: isinstance(x, IntType)
  2258     },
  2258     },
  2259 
  2259 
  2260     "unsignedShort": {
  2260     "unsignedShort": {
  2261         "type": SIMPLETYPE,
  2261         "type": SIMPLETYPE,
  2262         "basename": "unsignedShort",
  2262         "basename": "unsignedShort",
  2263         "extract": GenerateIntegerExtraction(minInclusive=0,maxExclusive=2**16),
  2263         "extract": GenerateIntegerExtraction(minInclusive=0, maxExclusive=2**16),
  2264         "facets": DECIMAL_FACETS,
  2264         "facets": DECIMAL_FACETS,
  2265         "generate": GenerateSimpleTypeXMLText(str),
  2265         "generate": GenerateSimpleTypeXMLText(str),
  2266         "initial": lambda: 0,
  2266         "initial": lambda: 0,
  2267         "check": lambda x: isinstance(x, IntType)
  2267         "check": lambda x: isinstance(x, IntType)
  2268     },
  2268     },
  2269 
  2269 
  2270     "byte": {
  2270     "byte": {
  2271         "type": SIMPLETYPE,
  2271         "type": SIMPLETYPE,
  2272         "basename": "byte",
  2272         "basename": "byte",
  2273         "extract": GenerateIntegerExtraction(minInclusive=-2**7,maxExclusive=2**7),
  2273         "extract": GenerateIntegerExtraction(minInclusive=-2**7, maxExclusive=2**7),
  2274         "facets": DECIMAL_FACETS,
  2274         "facets": DECIMAL_FACETS,
  2275         "generate": GenerateSimpleTypeXMLText(str),
  2275         "generate": GenerateSimpleTypeXMLText(str),
  2276         "initial": lambda: 0,
  2276         "initial": lambda: 0,
  2277         "check": lambda x: isinstance(x, IntType)
  2277         "check": lambda x: isinstance(x, IntType)
  2278     },
  2278     },
  2279 
  2279 
  2280     "unsignedByte": {
  2280     "unsignedByte": {
  2281         "type": SIMPLETYPE,
  2281         "type": SIMPLETYPE,
  2282         "basename": "unsignedByte",
  2282         "basename": "unsignedByte",
  2283         "extract": GenerateIntegerExtraction(minInclusive=0,maxExclusive=2**8),
  2283         "extract": GenerateIntegerExtraction(minInclusive=0, maxExclusive=2**8),
  2284         "facets": DECIMAL_FACETS,
  2284         "facets": DECIMAL_FACETS,
  2285         "generate": GenerateSimpleTypeXMLText(str),
  2285         "generate": GenerateSimpleTypeXMLText(str),
  2286         "initial": lambda: 0,
  2286         "initial": lambda: 0,
  2287         "check": lambda x: isinstance(x, IntType)
  2287         "check": lambda x: isinstance(x, IntType)
  2288     },
  2288     },
  2320     "boolean": {
  2320     "boolean": {
  2321         "type": SIMPLETYPE,
  2321         "type": SIMPLETYPE,
  2322         "basename": "boolean",
  2322         "basename": "boolean",
  2323         "extract": GetBoolean,
  2323         "extract": GetBoolean,
  2324         "facets": GenerateDictFacets(["pattern", "whiteSpace"]),
  2324         "facets": GenerateDictFacets(["pattern", "whiteSpace"]),
  2325         "generate": GenerateSimpleTypeXMLText(lambda x:{True: "true", False: "false"}[x]),
  2325         "generate": GenerateSimpleTypeXMLText(lambda x: {True: "true", False: "false"}[x]),
  2326         "initial": lambda: False,
  2326         "initial": lambda: False,
  2327         "check": lambda x: isinstance(x, BooleanType)
  2327         "check": lambda x: isinstance(x, BooleanType)
  2328     },
  2328     },
  2329 
  2329 
  2330     "duration": {
  2330     "duration": {
  2341         "type": SIMPLETYPE,
  2341         "type": SIMPLETYPE,
  2342         "basename": "dateTime",
  2342         "basename": "dateTime",
  2343         "extract": GetDateTime,
  2343         "extract": GetDateTime,
  2344         "facets": NUMBER_FACETS,
  2344         "facets": NUMBER_FACETS,
  2345         "generate": GenerateSimpleTypeXMLText(datetime.datetime.isoformat),
  2345         "generate": GenerateSimpleTypeXMLText(datetime.datetime.isoformat),
  2346         "initial": lambda: datetime.datetime(1,1,1,0,0,0,0),
  2346         "initial": lambda: datetime.datetime(1, 1, 1, 0, 0, 0, 0),
  2347         "check": lambda x: isinstance(x, datetime.datetime)
  2347         "check": lambda x: isinstance(x, datetime.datetime)
  2348     },
  2348     },
  2349 
  2349 
  2350     "date": {
  2350     "date": {
  2351         "type": SIMPLETYPE,
  2351         "type": SIMPLETYPE,
  2352         "basename": "date",
  2352         "basename": "date",
  2353         "extract": GetDate,
  2353         "extract": GetDate,
  2354         "facets": NUMBER_FACETS,
  2354         "facets": NUMBER_FACETS,
  2355         "generate": GenerateSimpleTypeXMLText(datetime.date.isoformat),
  2355         "generate": GenerateSimpleTypeXMLText(datetime.date.isoformat),
  2356         "initial": lambda: datetime.date(1,1,1),
  2356         "initial": lambda: datetime.date(1, 1, 1),
  2357         "check": lambda x: isinstance(x, datetime.date)
  2357         "check": lambda x: isinstance(x, datetime.date)
  2358     },
  2358     },
  2359 
  2359 
  2360     "time": {
  2360     "time": {
  2361         "type": SIMPLETYPE,
  2361         "type": SIMPLETYPE,
  2362         "basename": "time",
  2362         "basename": "time",
  2363         "extract": GetTime,
  2363         "extract": GetTime,
  2364         "facets": NUMBER_FACETS,
  2364         "facets": NUMBER_FACETS,
  2365         "generate": GenerateSimpleTypeXMLText(datetime.time.isoformat),
  2365         "generate": GenerateSimpleTypeXMLText(datetime.time.isoformat),
  2366         "initial": lambda: datetime.time(0,0,0,0),
  2366         "initial": lambda: datetime.time(0, 0, 0, 0),
  2367         "check": lambda x: isinstance(x, datetime.time)
  2367         "check": lambda x: isinstance(x, datetime.time)
  2368     },
  2368     },
  2369 
  2369 
  2370     "gYear": {
  2370     "gYear": {
  2371         "type": SIMPLETYPE,
  2371         "type": SIMPLETYPE,
  2546         "initial": lambda: "",
  2546         "initial": lambda: "",
  2547         "check": lambda x: isinstance(x, (StringType, UnicodeType))
  2547         "check": lambda x: isinstance(x, (StringType, UnicodeType))
  2548     },
  2548     },
  2549 
  2549 
  2550     # Complex Types
  2550     # Complex Types
  2551     "anyType": {"type": COMPLEXTYPE, "extract": lambda x:None},
  2551     "anyType": {"type": COMPLEXTYPE, "extract": lambda x: None},
  2552 }
  2552 }