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.
Fig.1: Overview of the XSD Tools for Java architecture
XSD Compiler
The
XSD Compiler takes in input an
XML Schema definition, performs syntax and semantic checks and produces, if needed, the corresponding
error messages. 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].
XSD Runtime
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.
Generic Java API
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.