[x3d-public] How can we semi-automate create producing stylesheets or serializers for X3DUOM and X3D XML?

John Carlson yottzumm at gmail.com
Wed Jun 16 17:20:24 PDT 2021


These 4 stylesheet files from the x3d sourceforge project. convert the 
X3DUOM to various SAI bindings, ontologies, schemas, etc.   We are 
planning on adding first, a stylesheet for X3D JSON schema (all 
versions), then later JavaScript and TypeScript SAI bindings.

CreateX3dSceneAccessInterfaceJava.xslt (java)
X3duomToX3dDiagnostics.xslt (??)
X3duomToX3dOntology.xslt (turtle)
X3duomToX3dPythonPackage.xslt (python)

My question is, what's the best way to 1) simplify creation of these 
stylesheets and 2) possibly share code, or 3) build a library (there 
already is a Java class for X3DUOM reading/writing).


I am thinking of something like (pseudo code):

interface ObjectModel {

     ObjectModel readModel(File, Language);

     void writeModel(File, Language);

}

class X3DUnifiedObjectModel implements ObjectModel {

     ObjectModel readModel(File, Language);

     void writeModel(File, Language);

}

class XMLSchema implements ObjectModel {

     ObjectModel readModel(File, Language);

     void writeModel(File, Language);

}

class JSONSchema implements ObjectModel {

     ObjectModel readModel(File, Language);

     void writeModel(File, Language);

}

class XMIObjectModel implements ObjectModel {

     ObjectModel readModel(File, Language);

     void writeModel(File, Language);

}

class OntologyObjectModel implements ObjectModel {

     ObjectModel readModel(File, Language);

     void writeModel(File, Language);

}

// We should be able to read and write model instances in each language 
at some point.

interface Language {

     ObjectModel readModel(File);

     void writeModel(File, ObjectModel);

}

class Java implements Language {

     ObjectModel readModel(File);

     void writeModel(File, ObjectModel)

}

class Python implements Language {

     ObjectModel readModel(File);

     void writeModel(File, ObjectModel);

}

class Turtle implements Language {

     ObjectModel readModel(File);

     void writeModel(File, ObjectModel);

}

class XML implements Language {

     ObjectModel readModel(File);

     void writeModel(File, ObjectModel);

}

class JSON implements Language {

     ObjectModel readModel(File);

     void writeModel(File, ObjectModel);

}

class JavaScript implements Language {

     ObjectModel readModel(File);

     void writeModel(File, ObjectModel);

}

class TypeScript extends JavaScript {

     ObjectModel readModel(File);

     void writeModel(File, ObjectModel);

}

Better designs welcome!  This is all very preliminary!


Thanks,


John


...




More information about the x3d-public mailing list