The MARBEN XSD Tools for Java encompass an XML Schema (XSD) Compiler, and pure Java ASN.1 BER, DER, PER (both aligned and unaligned variants), XER (XML Encoding Rules - both basic and canonical variants) and E-XER (Extended XER) encoding/decoding engines providing a Java API. The Java API is a set of Java classes generated by the XSD Compiler and depending on the input XML Schema (a Java class is generated for each XML Schema element or type).
The MARBEN XSD Tools for Java offer optionally a Generic Java API to access the encoding/decoding engines. This Generic Java API is dedicated to applications that do not know the type of the XSD data to process.
The XSD Compiler takes in input an XML Schema definition, performs syntax and semantic checks. It generates Java classes associated with the XML schema elements and types and an information table that the runtime will use to encode/decode data. The XSD compiler supports all XML Schemas that conform to [W3C-XSD].
The XSD Runtime provides encoding/decoding services as well as constraints check and traces services. The user application has access to the Java BER, DER, PER, XER and E-XER encoding/decoding services through the Java API generated by the XSD Compiler.
The Java API is user-friendly. To each type and element of the input XML schema definition corresponds a Java class. To encode or decode a value, the PER, BER, DER, XER or E-XER encoding or decoding method has simply to be called.
The MARBEN XSD Tools for Java offers optionally a Generic Java API to access the encoding/decoding engines. The Generic Java API allows to process data in a generic way. It provides Java classes that are independent of the input XSD description to process.
For instance, instead of providing the Java Class name corresponding to the type of the input XSD description, the Generic Java API allows to create a value by providing the Java Class name corresponding to the generic XSD type. You can also access any field of a complex type by providing the field name identifier. The XSD Compiler generates all these identifiers.