[x3d-public] JSON Schema meeting minutes Python Success!
John Carlson
yottzumm at gmail.com
Fri Oct 29 21:44:24 PDT 2021
I was able to change Python validators, and the new one validates with
XMLSpy converted schemas! Woohoo!
Here's the main test script that I use, which I will check in:
import os
from jschon import create_catalog, JSON, JSONSchema
import json
create_catalog('2020-12')
# validate the X3D Resources examples with draft 2020-12 JSON schema
# validate one instance "instance" against X3D JSON Schema 4.0
class ValidateX3DJSON:
# load a JSON file called jsonname into obj
def load_json(self, jsonpre, jsonname):
try:
with open(jsonname, 'r') as jsonfile:
obj = json.load(jsonfile)
jsonfile.close()
return obj
except:
print(f"{jsonpre}JsonInvalid", end=" ")
return None
# validate instance against two schemas
def validate_with_schemas(self, entryPath, schemas, pres):
result = [ "jsonSkipped", "jwcSkipped", "dbSkipped"]
try:
result[0] = "jsonDidNotParse"
instance = JSON(self.load_json("x3d", entryPath))
result[0] = "jsonParsed"
for si in range(len(schemas)):
result[si+1] = pres[si]+"Invalid"
schemas[si].evaluate(instance)
result[si+1] = pres[si]+"Valid"
except:
pass
print(result[0], result[1], result[2], end=" ")
def fileList(self, dirpath):
for base, directories, filenames in list(os.walk(dirpath)):
for filename in filenames:
if filename.endswith(".json"):
fullpath = os.path.join(base, filename)
yield fullpath
if __name__ == "__main__":
X3DJSONValidator = ValidateX3DJSON()
pre = ["jwc", "db"]
metaschema = JSONSchema(X3DJSONValidator.load_json("meta",
"../schema/2020-12-JSONSchema.json"))
schemafiles = ('../schema/x3d-4.0-JSONSchema.json',
'../schema/X3dXml4.0SchemaConvertedToJson2020-12Schema.json')
schemas = []
for s in range(len(schemafiles)):
schemas.append(JSONSchema(X3DJSONValidator.load_json(pre[s],
schemafiles[s])))
metaschema.evaluate(schemas[s])
for entryPath in
X3DJSONValidator.fileList("/c/x3d-code/www.web3d.org/x3d/content/examples"):
X3DJSONValidator.validate_with_schemas(entryPath, schemas, pre)
print(entryPath)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20211029/20be8791/attachment-0001.html>
More information about the x3d-public
mailing list