HomeEMF HibernateEMF JDO/JPOXWeb App GenerationServices
 

Detailed Listing of Supported (EMF) XML Schema Features

Supported XML Schema Structures

The goal is to implement most XML Schema Structures/Datatypes supported by EMF also for the persistency layer. For a description of the mapping from XML Schema to EMF (ecore) see here. In the listing below the numbers refer to the sections in this document.

Note: for each feature the following remarks are used:

  • Supported: means that there are test cases which show that the XML Schema feature is correctly translated in an ecore construction and EMF object and that the resulting EMF object can be persisted and retrieved.
  • Not yet supported: means that this feature will not work and EMF objects with this feature are not persisted correctly
  • To be tested: means that this feature is expected to work but has not been tested yet

The support by XML Schema Structure/Datatype:

  • Schema (Chapter 1)
    • 1.1 to 1.4: supported (not really relevant for persistency)
    • 1.5 and 1.6: DocumentRoot, currently the persistency solution will not persist a DocumentRoot object. The main reason for this is that the DocumentRoot is created to have a starting 'folder-like' point when loading a resource. In the Teneo persistency solution this is solved differently (see here).
    • 1.7: not relevant for persistency (is supported)
  • Simple Type Definition (Chapter 2)
    • 2.1 Simple Type with restriction: supported
    • 2.2 Simple Type with enumeration: supported
    • 2.3 and 2.4 List and Union Simple Type: list is supported, union is not yet supported
    • 2.5 Anonymous Simple Type: supported
    • 2.6 Simple Type with ecore:name: to be tested
    • 2.7 Simple Type with ecore:instanceClass: supported
  • Complex Type Definition (Chapter 3)
    • 3.1 Complex Type with extension or restriction: supported
    • 3.2 Anonymous Complex Type: supported
    • 3.3 Abstract Complex Type: supported
    • 3.4 Mixed Complex Type: supported
    • 3.5 Complex Type with ecore:name: supported
    • 3.6 Complex Type with ecore:featuremap: supported
    • 3.7 Complex Type with ecore:mixed: supported
  • Attribute declaration (Chapter 4), attributes have not been tested extensively. However because the java representation of EMF objects makes no difference between attributes and elements. The testcases for element declarations also in general apply to attribute declarations.
    • 4.1 Attribute of type xsd:ID: supported
    • 4.2 Attribute of type xsd:IDREF, xsd:IDREFS, xsd:anyURI: supported
    • 4.3 Required Attribute: supported
    • 4.4 Attribute with default: to be tested
    • 4.5 Qualified Attribute: to be tested
    • 4.6 Attribute reference: supported
    • 4.7 Global Attribute: not relevant for persistence
    • 4.8 Attribute with ecore:name: supported
  • Element Declaration (Chapter 5)
    • minOccurs/maxOccurs: all values of minOccurs and maxOccurs are supported
    • 5.1 Element of type xsd:anyType: not yet supported
    • 5.2 Element of type xsd:ID: supported
    • 5.3 Element of type xsd:IDREF, xsd:IDREFS, xsd:anyURI: supported
    • 5.4 Nillable Element: supported
    • 5.5 Element with default: supported
    • 5.6 Qualified element: to be tested
    • 5,7 Element reference: supported
    • 5.8 Global Element: not relevant for persistence
    • 5.9 Element with substitution group: supported
    • 5.10 Abstract Element: to be tested
    • 5.11 Element with ecore:name: supported
    • 5.12 Element with ecore:opposite: supported
    • 5.13 Element with ecore:featureMap: supported
  • Model group (Chapter 6)
    • 6.1 Non repeating xsd:choice: supported
    • 6.2 Repeating model group: supported
    • 6.3 Repeating model group reference: supported
    • 6.4 Model group with ecore:featureMap: supported
    • 6.5 Model group with ecore:name: supported
  • Wildcards (Chapter 7): not yet supported
  • Annotations (Chapter 8): not relevant for persistence
  • Predefined Schema Simple Types (Chapter 9): almost all simple types which are persistable are supported. The following types are not yet supported: gYear, gYearMonth, gDay, gMonthDay.