License     Codehaus     OpenEJB     OpenJMS     OpenORB     Tyrex     
 

Main
  Home
  About
  Features
  Download
  Maven 2 support
  API
  DTD & Schemas
  Recent changes
  RSS news feed

Development/Support
  Mailing Lists
  SVN/JIRA
  Contributing
  Support
  Prof. services

Related projects
  Spring ORM support
  Spring XML factories

XML
  Using XML
  XML Mapping
  XML FAQ
  XML HOW-TOs
  Custom Handlers
  Best practice

XML Code Generator
  Code Generator
  Properties
  Custom bindings
  Ant task
  Schema Support
  Example

JDO
  Introduction
  Using JDO
  JDO Config
  Types
  JDO Mapping
  JDO FAQ
  JDO Examples
  JDO HOW-TOs
  Other Features
  JDO sample JAR

Advanced JDO
  Caching
  OQL
  Trans. & Locks
  Design
  KeyGen
  Long Trans.
  Nested Attrs.
  Pooling Examples
  LOBs
  Best practice

More
  Presentations
  The Examples
  3rd Party Tools
  JDO Tests
  XML Tests
  Configuration
  Tips & Tricks
  Full JavaDoc
  CastorWiki
 
 

About
  License
  Contributors
  Marketplace
  Status, Todo
  Changelog
  Library
  Contact
  Project Name

  



Castor XML Schema Support

Documentation Author(s):
Arnaud Blandin


Introduction
Supported XML Schema Built-in Datatypes
    Primitive Datatypes
    Derived Datatypes
Supported XML Schema Structures
    Groups
    Wilcard


Introduction

Castor XML supports the W3C XML Schema Recommendation document (05/02/2001). The Schema Object Model (located in the package org.exolab.castor.xml.schema) provides an in-memory representation of a given XML schema whereas the Source Generator provides a binding between XML schema datatypes and structures into the corresponding ones in Java.

The Castor Schema Object Model can read (org.exolab.castor.xml.schema.reader) and write (org.exolab.castor.xml.schema.writer) an XML Schema as defined by the W3C recommandation. It allows to create and manipulate an in-memory view of an XML Schema.

The Castor Schema Object Model supports the W3C XML Schema recommandation with no limitation. However the Source Generator does not offer currently a one to one mapping from an XML Schema component to a Java component for every XML Schema components: some limitations exist. The aim of the following sections is to provide a list of supported features in the Source Generator. Please keep in mind that the Castor Schema Object Model again can handle any XML Schema without limitations.

It happens that a Schema type does not have the corresponding one in Java. Thus the Source Generator uses Castor implementation of these specific types (located in the types package). for instance the duration type is implemented directly in Castor. Remember that the representation of XML Schema datatypes does not try to fit exactly the W3C XML Schema specifications, the aim is to map an XML Schema type to the java type that fit the most to the XML Schema type.

You will find next a list of the supported XML Schema datatypes and structures in the Source Code Generator. For a more detailed support of XML Schema structure and more information on the Schema Object Model, please refer to Source Generator User Document(PDF).

Supported XML Schema Built-in Datatypes

The following is a list of the supported datatypes with the corresponding facets and the java mapping type.

Primitive Datatypes

TypeSupported FacetsJava mapping type
string length
minLength
maxLength
pattern
enumeration
whiteSpace
java.lang.String
boolean primitive boolean type
decimal totalDigits
fractionDigits
pattern
whiteSpace
enumeration
maxInclusive
maxExclusive
minInclusive
minExclusive
java.math.BigDecimal
float pattern
enumeration
maxInclusive
maxExclusive
minInclusive
minExclusive
primitive float type
double pattern
enumeration
maxInclusive
maxExclusive
minInclusive
minExclusive
double primitive type
duration enumeration
maxInclusive
maxExclusive
minInclusive
minExclusive
org.exolab.castor.types.Duration
dateTime enumeration
java.util.Date
time enumeration
maxInclusive
maxExclusive
minInclusive
minExclusive
org.exolab.castor.types.Time
gYearMonth enumeration
maxInclusive
maxExclusive
minInclusive
minExclusive
org.exolab.castor.types.GYearMonth
gYear enumeration
maxInclusive
maxExclusive
minInclusive
minExclusive
org.exolab.castor.types.GYear
gMonthDay enumeration
maxInclusive
maxExclusive
minInclusive
minExclusive
org.exolab.castor.types.GMonthDay
gDay enumeration
maxInclusive
maxExclusive
minInclusive
minExclusive
org.exolab.castor.types.GDay
gMonth enumeration
maxInclusive
maxExclusive
minInclusive
minExclusive
org.exolab.castor.types.GMonth
hexBinary primitive byte array
base64Binary primitive byte array
anyURI enumeration
java.lang.String
QName length
minLength
maxLength
pattern
enumeration
java.lang.String

Derived Datatypes

TypeSupported FacetsJava mapping type
normalizedString length
minLength
maxLength
pattern
enumeration
java.lang.String
NMTOKEN enumeration
java.lang.String
NMTOKENS java.util.Vector of NMTOKEN
NCName enumeration
java.lang.String
ID enumeration
java.lang.String
IDREF java.lang.Object
IDREFS java.util.Vector of IDREF
integer totalDigits
fractionDigits
pattern
enumeration
maxInclusive
primitive int type
nonPositiveInteger pattern
totalDigits
fractionDigits
maxInclusive
maxExclusive
minInclusive
maxInclusive
primitive int type
NMTOKENS java.util.Vector of NMTOKEN
negativeInteger pattern
totalDigits
fractionDigits
maxInclusive
maxExclusive
minInclusive
maxInclusive
primitive int type
long pattern
maxInclusive
maxExclusive
minInclusive
minExclusive
primitive long type
int pattern
enumeration
maxInclusive
maxExclusive
minInclusive
minExclusive
primitive int type
short pattern
enumeration
maxInclusive
maxExclusive
minInclusive
minExclusive
primitive int type
byte pattern
enumeration
maxInclusive
maxExclusive
minInclusive
minExclusive
primitive byte type
nonNegativeInteger pattern
totalDigits
fractionDigits
maxInclusive
maxExclusive
minInclusive
maxInclusive
primitive int type
positiveInteger pattern
totalDigits
fractionDigits
maxExclusive
minExclusive
maxInclusive
minInclusive
pattern
primitive int type
unsignedInt pattern
totalDigits
fractionDigits
maxExclusive
minExclusive
maxInclusive
minInclusive
pattern
primitive int type
unsignedShort pattern
totalDigits
fractionDigits
maxExclusive
minExclusive
maxInclusive
minInclusive
pattern
primitive short type
unsignedByte pattern
totalDigits
fractionDigits
maxExclusive
minExclusive
maxInclusive
minInclusive
pattern
primitive short type

Supported XML Schema Structures

Supporting XML schema structure is a constant work. The main structures are already supported with sometimes some limitations. The following will give you a rough list of the supported structures. For a more detailed support of XML Schema structure in the Source Generator or in the Schema Object Model, please refer to Source Generator User Document(PDF).

Supported schema components:
-Attribute Declaration (<attribute>)
-Element Declaration (<element>)
-ComplexType Definition (<complexType>)
-AttributeGroup Definition (<attributeGroup>)
-ModelGroup Definition (<group>)
-ModelGroup (<all>, <choice>, <sequence>)
-Annotation (<annotation>)
-Wildcard (<any>)
-SimpleType Definition (<simpleType>)

Groups

Grouping support covers both Model Group Definitions (<group>) and Model Groups (<all>, <choice>, <sequence>). In this section, we will call 'nested group', a Model Group whose first parent is another Model Group.
-For each top-level Model Group Definition, a class is generated either when using the 'element' mapping property or the 'type' one.
-If a group - nested or not - appears to have maxOccurs > 1 then a class is generated to represent the items contained in the group.
-For each nested group, a class is generated. The name of the generated class will follow this naming convention: Name,Compositor+,Counter? where
-'Name' is name of the top-level component (element, complexType or group).
-'Compositor' is the compositor of the nested group. For instance, if a 'choice' is nested inside a sequence, the value of Compositor will be SequenceChoice ('Sequence'+'Choice'). Note: if the 'choice' is inside a Model Group and that Model Group parent is a Model Group Definition or a complexType then the value of'Compositor' will be only 'Choice'.
-'Counter' is a number that prevents naming collision.

Wilcard

<any> is supported in the Source Generator and will map to an AnyNode. However full namespace validation is not yet implemented even though an AnyNode structure is fully namespace aware.

<anyAttribute> is currently not supported, it is a work in progress

 
   
  
   
 


Copyright © 1999-2005 ExoLab Group, Intalio Inc., and Contributors. All rights reserved.
 
Java, EJB, JDBC, JNDI, JTA, Sun, Sun Microsystems are trademarks or registered trademarks of Sun Microsystems, Inc. in the United States and in other countries. XML, XML Schema, XSLT and related standards are trademarks or registered trademarks of MIT, INRIA, Keio or others, and a product of the World Wide Web Consortium. All other product names mentioned herein are trademarks of their respective owners.