wiki:ebXMLSpecificationXSDDiscrepancies

ebXML XSD and the ebXML specification

author: Heikki Doeleman

This page describes discrepancies between the ebXML schema (copied here) and the ebXML specification. Also other details of interest regarding the schema are listed here.


Namespace for attribute "lang" in LocalizedString

The whole schema has targetNamespace "urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0", except for one attribute of the LocalizedString type. The attribute "lang" is in the XML namespace, "http://www.w3.org/XML/1998/namespace".

This different namespace for "lang" is reflected in the JiBX binding.


Logical ID for RegistryObject

According to the ebRIM specification, "each RegistryObject instance MUST have a lid (Logical Id) attribute" (section 2.5.6). In the XSD however, attribute 'lid' for complexType 'RegistryObjectType' is defined as <attribute name="lid" type="anyURI" use="optional"/>. In our implementation we follow the XSD (so it's optional).


No Slots for PostalAddress

The type PostalAddress has an attribute Slots according to the specification, but this is left out in the XSD. Likewise it's not there in the Java implementation.


referenceURI instead of ObjectRef

In almost all cases where the specification says of a property that it is of type ObjectRef, the XSD has modeled them as type referenceURI. So has the Java implementation.


Attribute <any> in QueryExpression

The type QueryExpression has an attribute <any>, which according to the specification

is extensible and therefor MAY be of any type depending upon the queryLanguage specified. For SQL queryLanguage it MUST be an SQL query string. For Filter query it MUST be a FilterQueryType defined by [RR-QUERY-XSD].

In the XSD it is defined as follows:

   <sequence>
     <!--
     MAY be any query language syntax supported. 
     MUST support FilterQuery. SHOULD support SQLQuery
     -->
     <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="1" />
   </sequence>

Now this is interesting from the point of view of the XML Binding. At first, I implemented the any attribute in Java as type "java.lang.Object" but it turns out this is not too easy with JiXB, because it doesn't know how to marshall/unmarshall that type. I could write custom methods for that purpose but then again, neither do I know what might be the actual type at runtime, so any attempt at customs methods would be a guess.

I have defined it for the time being as follows: the any attribute in Java is of type "java.lang.String" and in the JiBX binding, I defined it as a CDATA value. Meanwhile, if anybody can point me to [RR-QUERY-XSD] which is not dereferenced in the specification, I'll try something better ..


Last modified 16 years ago Last modified on 02/19/09 09:04:05
Note: See TracWiki for help on using the wiki.