validate_examples.py 1.3 KB
Newer Older
1
2
import glob
import sys
canterburym's avatar
canterburym committed
3
import argparse
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
from pathlib import Path
from pprint import pprint

if __name__ == '__main__':

    if sys.version_info <= (3, 5):
        sys.exit('ERROR: You need at least Python 3.5 to run this tool')

    try:
        from lxml import etree
    except ImportError:
        sys.exit('ERROR: You need to install the Python lxml library')

    try:
        import xmlschema
    except ImportError:
        sys.exit('ERROR: You need to install the xml schema library')


    extraSchemas = [
        'examples/FooServiceSchema.xsd',
canterburym's avatar
canterburym committed
25
        'TS_103_280_v020401.xsd'
26
27
28
29
30
31
32
    ]

    locations = []
    for schemaFile in extraSchemas:
        xs = xmlschema.XMLSchema(schemaFile, validation='skip')
        locations.append((xs.default_namespace, str(Path(schemaFile))))

canterburym's avatar
canterburym committed
33
    coreSchema = xmlschema.XMLSchema('TS_103_707_v010301.xsd', locations=locations)
34
35
36
37
38
39
40
41
42
43
44
45
46
47

    for schema in extraSchemas:
        newSchema = xmlschema.XMLSchema(schema)
        coreSchema.import_schema(newSchema.default_namespace, schema)

    examples = glob.glob('examples/*.xml')
    for example in examples:
        try:
            coreSchema.validate(example)
            print ("{0} passed validation".format(example))
        except Exception as ex:
            print ("{0} failed validation: {1}".format(example, ex))

    print ('Done')