users@jaxb.java.net

Internal Error and No Source

From: David Morris <David.Morris_at_plumcreek.com>
Date: Fri, 19 Sep 2003 09:42:16 -0600

Since early this year, I have been unable to use JAXB in a project
because I receive an error. I posted several messages on the Sun support
site (the Web Services site) but never received a response. I am
confident that having access to the source would allow me to fix the
problem or at least understand why it won't work. Is the source still in
limbo?

I started trying this with JAXB 1.0 and it has failed from there through
the latest 1.2 release.

I started decompiling the code and can work from that but it is
pointless if the source is actually going to be released some time soon.
Until I decompiled the code, the java.lang.InternalError had me on the
wrong track. I think a more specific error that doesn't imply a JVM
failure would be better.

I have included my binding and schema source at the end of this message.
I have tried many combinations of bindings to get around this error
including inline and external.

Thanks,

David Morris

Stack trace:

parsing a schema...
java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:324)
    at org.apache.commons.launcher.ChildMain.run(ChildMain.java:269)
Caused by: java.lang.InternalError
    at
com.sun.tools.xjc.reader.xmlschema.AbstractXSFunctionImpl._assert(AbstractXSFunctionImpl.java:44)
    at
com.sun.tools.xjc.reader.xmlschema.FieldBuilder.attributeDecl(FieldBuilder.java:99)
    at
com.sun.xml.xsom.impl.AttributeDeclImpl.apply(AttributeDeclImpl.java:55)
    at
com.sun.tools.xjc.reader.xmlschema.FieldBuilder.build(FieldBuilder.java:73)
    at
com.sun.tools.xjc.reader.xmlschema.cs.ClassSelector.build(ClassSelector.java:236)
    at
com.sun.tools.xjc.reader.xmlschema.cs.ClassSelector._bindToClass(ClassSelector.java:174)
    at
com.sun.tools.xjc.reader.xmlschema.cs.ClassSelector.bindToType(ClassSelector.java:147)
    at
com.sun.tools.xjc.reader.xmlschema.TypeBuilder.attributeDecl(TypeBuilder.java:75)
    at
com.sun.xml.xsom.impl.AttributeDeclImpl.apply(AttributeDeclImpl.java:55)
    at
com.sun.tools.xjc.reader.xmlschema.TypeBuilder.build(TypeBuilder.java:56)
    at
com.sun.tools.xjc.reader.xmlschema.FieldBuilder.attributeUse(FieldBuilder.java:106)
    at
com.sun.xml.xsom.impl.AttributeUseImpl.apply(AttributeUseImpl.java:59)
    at
com.sun.tools.xjc.reader.xmlschema.FieldBuilder.build(FieldBuilder.java:73)
    at
com.sun.tools.xjc.reader.xmlschema.FieldBuilder.attributeContainer(FieldBuilder.java:93)
    at
com.sun.tools.xjc.reader.xmlschema.ct.FreshComplexTypeBuilder.build(FreshComplexTypeBuilder.java:61)
    at
com.sun.tools.xjc.reader.xmlschema.ct.ComplexTypeFieldBuilder.build(ComplexTypeFieldBuilder.java:55)
    at
com.sun.tools.xjc.reader.xmlschema.FieldBuilder.complexType(FieldBuilder.java:225)
    at
com.sun.xml.xsom.impl.ComplexTypeImpl.apply(ComplexTypeImpl.java:162)
    at
com.sun.tools.xjc.reader.xmlschema.FieldBuilder.build(FieldBuilder.java:73)
    at
com.sun.tools.xjc.reader.xmlschema.cs.ClassSelector.build(ClassSelector.java:236)
    at
com.sun.tools.xjc.reader.xmlschema.cs.ClassSelector._bindToClass(ClassSelector.java:174)
    at
com.sun.tools.xjc.reader.xmlschema.cs.ClassSelector.bindToType(ClassSelector.java:147)
    at
com.sun.tools.xjc.reader.xmlschema.FieldBuilder.elementDecl(FieldBuilder.java:387)
    at com.sun.xml.xsom.impl.ElementDecl.apply(ElementDecl.java:137)
    at
com.sun.tools.xjc.reader.xmlschema.FieldBuilder.build(FieldBuilder.java:73)
    at
com.sun.tools.xjc.reader.xmlschema.cs.ClassSelector.build(ClassSelector.java:236)
    at
com.sun.tools.xjc.reader.xmlschema.cs.ClassSelector._bindToClass(ClassSelector.java:174)
    at
com.sun.tools.xjc.reader.xmlschema.cs.ClassSelector.bindToType(ClassSelector.java:147)
    at
com.sun.tools.xjc.reader.xmlschema.BGMBuilder.populate(BGMBuilder.java:242)
    at
com.sun.tools.xjc.reader.xmlschema.BGMBuilder.buildContents(BGMBuilder.java:209)
    at
com.sun.tools.xjc.reader.xmlschema.BGMBuilder._build(BGMBuilder.java:109)
    at
com.sun.tools.xjc.reader.xmlschema.BGMBuilder.build(BGMBuilder.java:78)
    at
com.sun.tools.xjc.GrammarLoader.annotateXMLSchema(GrammarLoader.java:398)
    at com.sun.tools.xjc.GrammarLoader.load(GrammarLoader.java:125)
    at com.sun.tools.xjc.GrammarLoader.load(GrammarLoader.java:71)
    at com.sun.tools.xjc.Driver.run(Driver.java:192)
    at com.sun.tools.xjc.Driver._main(Driver.java:82)
    at com.sun.tools.xjc.Driver.access$000(Driver.java:48)
    at com.sun.tools.xjc.Driver$1.run(Driver.java:62)


<jxb:bindings version="1.0"
               xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
               xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <jxb:bindings schemaLocation="hibernate-mapping-2.xsd"
node="/xsd:schema">
    <jxb:bindings node="/*/*[@name='class']">
        <jxb:class name="Clazz"/>
            <jxb:property name="Clazz"/>
    </jxb:bindings>
    <jxb:bindings node="/*/*[@name='composite-id']/*/*[@name='class']">
        <jxb:class name="Clazza"/>
            <jxb:property name="Clazza"/>
    </jxb:bindings>
    <jxb:bindings node="/*/*[@name='many-to-one']/*/*[@name='class']">
        <jxb:class name="Clazzb"/>
            <jxb:property name="Clazzb"/>
    </jxb:bindings>
    <jxb:bindings node="/*/*[@name='one-to-one']/*/*[@name='class']">
        <jxb:class name="Clazzc"/>
            <jxb:property name="Clazzc"/>
    </jxb:bindings>
    <jxb:bindings
node="/*/*[@name='key-many-to-one']/*/*[@name='class']">
        <jxb:class name="Clazzd"/>
            <jxb:property name="Clazzd"/>
    </jxb:bindings>
    <jxb:bindings node="/*/*[@name='component']/*/*[@name='class']">
        <jxb:class name="Clazze"/>
            <jxb:property name="Clazze"/>
    </jxb:bindings>
    <jxb:bindings node="/*/*[@name='one-to-many']/*/*[@name='class']">
        <jxb:class name="Clazzf"/>
            <jxb:property name="Clazzf"/>
    </jxb:bindings>
    <jxb:bindings node="/*/*[@name='many-to-many']/*/*[@name='class']">
        <jxb:class name="Clazzg"/>
            <jxb:property name="Clazzg"/>
    </jxb:bindings>
    <jxb:bindings
node="/*/*[@name='composite-element']/*/*[@name='class']">
        <jxb:class name="Clazzh"/>
            <jxb:property name="Clazzh"/>
    </jxb:bindings>
    <jxb:bindings
node="/*/*[@name='nested-composite-element']/*/*[@name='class']">
        <jxb:class name="Clazzi"/>
            <jxb:property name="Clazzi"/>
    </jxb:bindings>
    <jxb:bindings
node="/*/*[@name='index-many-to-many']/*/*[@name='class']">
        <jxb:class name="Clazzj"/>
            <jxb:property name="Clazzj"/>
    </jxb:bindings>
    <jxb:bindings
node="/*/*[@name='composite-index']/*/*[@name='class']">
        <jxb:class name="Clazzk"/>
            <jxb:property name="Clazzk"/>
    </jxb:bindings>
    <jxb:bindings node="/*/*[@name='generator']/*/*[@name='class']">
        <jxb:class name="Clazzl"/>
            <jxb:property name="Clazzl"/>
    </jxb:bindings>
    <jxb:bindings node="/*/*[@name='many-to-one']/*/*[@name='class']">
        <jxb:class name="Clazzm"/>
            <jxb:property name="Clazzm"/>
    </jxb:bindings>
    <jxb:bindings node="/*/*[@name='many-to-one']/*/*[@name='class']">
        <jxb:class name="Clazzn"/>
            <jxb:property name="Clazzn"/>
    </jxb:bindings>
  </jxb:bindings>
</jxb:bindings>



<?xml version="1.0" encoding="utf-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <xsd:element name="hibernate-mapping">
        <xsd:annotation>
            <xsd:documentation> Hibernate Mapping DTD. (!DOCTYPE
                hibernate-mapping PUBLIC &quot;-//Hibernate/Hibernate
                Mapping DTD 2.0//EN&quot;
               
&quot;http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd&quot;)
                An instance of this XML document may contain mappings
                for an arbitrary number of classes. The class mappings
                may contain associations to classes mapped in the same
                document or in another document. No class may be mapped
                more than once. Each document may also contains mappings
                for an arbitrary number of toplevel collections.
                Toplevel collection roles may be referenced by later
                class and collection mappings in the same document.
                (They must be declared before they are used.) The
                document root. </xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element maxOccurs="unbounded" minOccurs="0"
ref="meta"/>
                <xsd:element maxOccurs="unbounded" minOccurs="0"
ref="class"/>
                <xsd:element maxOccurs="unbounded" minOccurs="0"
ref="query"/>
            </xsd:sequence>
            <xsd:attribute name="schema" type="xsd:string"
use="optional"/>
            <xsd:attribute default="none" name="default-cascade">
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:enumeration value="none"/>
                        <xsd:enumeration value="save-update"/>
                        <xsd:enumeration value="all"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:attribute>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="class">
        <xsd:annotation>
            <xsd:documentation> Root of an entity class hierarchy.
                Entities have their own tables. </xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element maxOccurs="unbounded" minOccurs="0"
ref="meta"/>
                <xsd:element maxOccurs="1" minOccurs="0"
ref="jcs-cache"/>
                <xsd:choice>
                    <xsd:element ref="id"/>
                    <xsd:element ref="composite-id"/>
                </xsd:choice>
                <xsd:element maxOccurs="1" minOccurs="0"
ref="discriminator"/>
                <xsd:choice maxOccurs="1" minOccurs="0">
                    <xsd:element ref="version"/>
                    <xsd:element ref="timestamp"/>
                </xsd:choice>
                <xsd:choice maxOccurs="unbounded" minOccurs="0">
                    <xsd:element ref="property"/>
                    <xsd:element ref="many-to-one"/>
                    <xsd:element ref="one-to-one"/>
                    <xsd:element ref="component"/>
                    <xsd:element ref="dynabean"/>
                    <xsd:element ref="map"/>
                    <xsd:element ref="set"/>
                    <xsd:element ref="list"/>
                    <xsd:element ref="bag"/>
                    <xsd:element ref="array"/>
                    <xsd:element ref="primitive-array"/>
                </xsd:choice>
                <xsd:choice>
                    <xsd:element maxOccurs="unbounded" minOccurs="0"
ref="subclass"/>
                    <xsd:element maxOccurs="unbounded" minOccurs="0"
ref="joined-subclass"/>
                </xsd:choice>
            </xsd:sequence>
            <xsd:attribute name="name" type="xsd:string"
use="required"/>
            <xsd:attribute name="table" type="xsd:string"
use="optional"/>
            <xsd:attribute name="schema" type="xsd:string"
use="optional"/>
            <xsd:attribute name="proxy" type="xsd:string"
use="optional"/>
            <xsd:attribute name="discriminator-value" type="xsd:string"
use="optional"/>
            <xsd:attribute default="true" name="mutable">
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:enumeration value="true"/>
                        <xsd:enumeration value="false"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:attribute>
            <xsd:attribute default="implicit" name="polymorphism">
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:enumeration value="implicit"/>
                        <xsd:enumeration value="explicit"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:attribute>
            <xsd:attribute name="persister" type="xsd:string"
use="optional"/>
            <xsd:attribute default="false" name="dynamic-update">
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:enumeration value="true"/>
                        <xsd:enumeration value="false"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:attribute>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="id">
        <xsd:annotation>
            <xsd:documentation> Declares the id type, column and
                generation algorithm for an entity class. If a name
                attribut is given, the id is exposed to the application
                through the named property of the class. If not, the id
                is only exposed to the application through
Session.getID()</xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element maxOccurs="unbounded" minOccurs="0"
ref="meta"/>
                <xsd:element maxOccurs="unbounded" minOccurs="0"
ref="column"/>
                <xsd:element ref="generator"/>
            </xsd:sequence>
            <xsd:attribute name="name" type="xsd:string"
use="optional"/>
            <xsd:attribute name="column" type="xsd:string"
use="optional"/>
            <xsd:attribute name="type" type="xsd:string"
use="optional"/>
            <xsd:attribute name="length" type="xsd:string"
use="optional"/>
            <xsd:attribute default="null" name="unsaved-value"
type="xsd:string"/>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="composite-id">
        <xsd:annotation>
            <xsd:documentation> any|none|null|0|-1|... A composite key
                may be modelled by a java class with a property for each
                key column. The class must implement
                java.io.Serializable and reimplement equals() and
                hashCode(). </xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
            <xsd:choice maxOccurs="unbounded" minOccurs="1">
                <xsd:element ref="key-property"/>
                <xsd:element ref="key-many-to-one"/>
            </xsd:choice>
            <xsd:attribute name="class" type="xsd:string"
use="optional"/>
            <xsd:attribute name="name" type="xsd:string"
use="optional"/>
            <xsd:attribute default="none" name="unsaved-value">
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:enumeration value="any"/>
                        <xsd:enumeration value="none"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:attribute>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="discriminator">
        <xsd:annotation>
            <xsd:documentation> Polymorphic data requires a column
                holding a class discriminator value. This value is not
                directly exposed to the application.
</xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element maxOccurs="1" minOccurs="0" ref="column"/>
            </xsd:sequence>
            <xsd:attribute name="column" type="xsd:string"
use="optional"/>
            <xsd:attribute default="string" name="type"
type="xsd:string"/>
            <xsd:attribute default="true" name="not-null">
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:enumeration value="true"/>
                        <xsd:enumeration value="false"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:attribute>
            <xsd:attribute name="length" type="xsd:string"
use="optional"/>
            <xsd:attribute default="false" name="force">
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:enumeration value="true"/>
                        <xsd:enumeration value="false"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:attribute>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="version">
        <xsd:annotation>
            <xsd:documentation> Versioned data requires a column holding
                a version number. This is exposed to the application
                through a property of the Java class.
</xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
            <xsd:attribute name="name" type="xsd:string"
use="required"/>
            <xsd:attribute name="column" type="xsd:string"
use="optional"/>
            <xsd:attribute default="integer" name="type"
type="xsd:string"/>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="timestamp">
        <xsd:complexType>
            <xsd:attribute name="name" type="xsd:string"
use="required"/>
            <xsd:attribute name="column" type="xsd:string"
use="optional"/>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="subclass">
        <xsd:annotation>
            <xsd:documentation> Subclass declarations are nested beneath
                the root class declaration to achieve polymorphic
                persistence. </xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element maxOccurs="unbounded" minOccurs="0"
ref="meta"/>
                <xsd:choice maxOccurs="unbounded" minOccurs="0">
                    <xsd:element ref="property"/>
                    <xsd:element ref="many-to-one"/>
                    <xsd:element ref="one-to-one"/>
                    <xsd:element ref="component"/>
                    <xsd:element ref="map"/>
                    <xsd:element ref="set"/>
                    <xsd:element ref="list"/>
                    <xsd:element ref="bag"/>
                    <xsd:element ref="array"/>
                    <xsd:element ref="primitive-array"/>
                </xsd:choice>
                <xsd:element maxOccurs="unbounded" minOccurs="0"
ref="subclass"/>
            </xsd:sequence>
            <xsd:attribute name="name" type="xsd:string"
use="required"/>
            <xsd:attribute name="proxy" type="xsd:string"
use="optional"/>
            <xsd:attribute name="discriminator-value" type="xsd:string"
use="optional"/>
            <xsd:attribute default="false" name="dynamic-update">
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:enumeration value="true"/>
                        <xsd:enumeration value="false"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:attribute>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="joined-subclass">
        <xsd:annotation>
            <xsd:documentation> Joined subclasses are used for the
                normalized table-per-subclass mapping strategy
</xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element maxOccurs="unbounded" minOccurs="0"
ref="meta"/>
                <xsd:element ref="key"/>
                <xsd:choice maxOccurs="unbounded" minOccurs="0">
                    <xsd:element ref="property"/>
                    <xsd:element ref="many-to-one"/>
                    <xsd:element ref="one-to-one"/>
                    <xsd:element ref="component"/>
                    <xsd:element ref="map"/>
                    <xsd:element ref="set"/>
                    <xsd:element ref="list"/>
                    <xsd:element ref="bag"/>
                    <xsd:element ref="array"/>
                    <xsd:element ref="primitive-array"/>
                </xsd:choice>
                <xsd:element maxOccurs="unbounded" minOccurs="0"
ref="joined-subclass"/>
            </xsd:sequence>
            <xsd:attribute name="name" type="xsd:string"
use="required"/>
            <xsd:attribute name="proxy" type="xsd:string"
use="optional"/>
            <xsd:attribute name="table" type="xsd:string"
use="optional"/>
            <xsd:attribute name="schema" type="xsd:string"
use="optional"/>
            <xsd:attribute default="false" name="dynamic-update">
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:enumeration value="true"/>
                        <xsd:enumeration value="false"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:attribute>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="property">
        <xsd:annotation>
            <xsd:documentation> Property of an entity class or
                component, component-element, composite-id, etc.
                JavaBeans style properties are mapped to table columns.
</xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element maxOccurs="unbounded" minOccurs="0"
ref="meta"/>
                <xsd:element maxOccurs="unbounded" minOccurs="0"
ref="column"/>
            </xsd:sequence>
            <xsd:attribute name="name" type="xsd:string"
use="required"/>
            <xsd:attribute name="type" type="xsd:string"
use="optional"/>
            <xsd:attribute name="column" type="xsd:string"
use="optional"/>
            <xsd:attribute name="length" type="xsd:string"
use="optional"/>
            <xsd:attribute default="false" name="not-null">
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:enumeration value="true"/>
                        <xsd:enumeration value="false"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:attribute>
            <xsd:attribute default="false" name="unique">
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:enumeration value="true"/>
                        <xsd:enumeration value="false"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:attribute>
            <xsd:attribute default="true" name="update">
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:enumeration value="true"/>
                        <xsd:enumeration value="false"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:attribute>
            <xsd:attribute default="true" name="insert">
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:enumeration value="true"/>
                        <xsd:enumeration value="false"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:attribute>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="many-to-one">
        <xsd:annotation>
            <xsd:documentation> only supported for properties of a class
                (not component) Declares an association between two
                entities (Or from a component, component element, etc.
                to an entity). </xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element maxOccurs="unbounded" minOccurs="0"
ref="meta"/>
                <xsd:element maxOccurs="unbounded" minOccurs="0"
ref="column"/>
            </xsd:sequence>
            <xsd:attribute name="name" type="xsd:string"
use="required"/>
            <xsd:attribute name="class" type="xsd:string"
use="optional"/>
            <xsd:attribute name="column" type="xsd:string"
use="optional"/>
            <xsd:attribute default="false" name="not-null">
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:enumeration value="true"/>
                        <xsd:enumeration value="false"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:attribute>
            <xsd:attribute default="false" name="unique">
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:enumeration value="true"/>
                        <xsd:enumeration value="false"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:attribute>
            <xsd:attribute name="cascade" use="optional">
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:enumeration value="none"/>
                        <xsd:enumeration value="all"/>
                        <xsd:enumeration value="save-update"/>
                        <xsd:enumeration value="delete"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:attribute>
            <xsd:attribute default="auto" name="outer-join">
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:enumeration value="true"/>
                        <xsd:enumeration value="false"/>
                        <xsd:enumeration value="auto"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:attribute>
            <xsd:attribute default="true" name="update">
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:enumeration value="true"/>
                        <xsd:enumeration value="false"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:attribute>
            <xsd:attribute default="true" name="insert">
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:enumeration value="true"/>
                        <xsd:enumeration value="false"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:attribute>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="one-to-one">
        <xsd:annotation>
            <xsd:documentation> only supported for many-to-one of a
                class (not component) Declares a one-to-one
                association between two entities (Or from a component,
                component element, etc. to an entity).
</xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element maxOccurs="unbounded" minOccurs="0"
ref="meta"/>
            </xsd:sequence>
            <xsd:attribute name="name" type="xsd:string"
use="required"/>
            <xsd:attribute name="class" type="xsd:string"
use="optional"/>
            <xsd:attribute name="cascade" use="optional">
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:enumeration value="none"/>
                        <xsd:enumeration value="all"/>
                        <xsd:enumeration value="save-update"/>
                        <xsd:enumeration value="delete"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:attribute>
            <xsd:attribute default="auto" name="outer-join">
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:enumeration value="true"/>
                        <xsd:enumeration value="false"/>
                        <xsd:enumeration value="auto"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:attribute>
            <xsd:attribute default="false" name="constrained">
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:enumeration value="true"/>
                        <xsd:enumeration value="false"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:attribute>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="key-property">
        <xsd:annotation>
            <xsd:documentation> A property embedded in a composite
                identifier or map index (always not-null).
</xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element maxOccurs="unbounded" minOccurs="0"
ref="column"/>
            </xsd:sequence>
            <xsd:attribute name="name" type="xsd:string"
use="required"/>
            <xsd:attribute name="type" type="xsd:string"
use="optional"/>
            <xsd:attribute name="column" type="xsd:string"
use="optional"/>
            <xsd:attribute name="length" type="xsd:string"
use="optional"/>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="key-many-to-one">
        <xsd:annotation>
            <xsd:documentation> A many-to-one association embedded in a
                composite identifier or map index (always not-null,
                never cascade). </xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element maxOccurs="unbounded" minOccurs="0"
ref="column"/>
            </xsd:sequence>
            <xsd:attribute name="name" type="xsd:string"
use="required"/>
            <xsd:attribute name="class" type="xsd:string"
use="optional"/>
            <xsd:attribute name="column" type="xsd:string"
use="optional"/>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="component">
        <xsd:annotation>
            <xsd:documentation> A component is a user-defined class,
                persisted along with its containing entity to the table
                of the entity class. JavaBeans style properties of the
                component are mapped to columns of the table of the
                containing entity. A null component reference is mapped
                to null values in all columns and vice versa. Components
                do not support shared reference semantics.
</xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element maxOccurs="1" minOccurs="0" ref="parent"/>
                <xsd:choice maxOccurs="unbounded" minOccurs="0">
                    <xsd:element ref="property"/>
                    <xsd:element ref="many-to-one"/>
                    <xsd:element ref="one-to-one"/>
                    <xsd:element ref="component"/>
                    <xsd:element ref="dynabean"/>
                    <xsd:element ref="map"/>
                    <xsd:element ref="set"/>
                    <xsd:element ref="list"/>
                    <xsd:element ref="bag"/>
                    <xsd:element ref="array"/>
                    <xsd:element ref="primitive-array"/>
                </xsd:choice>
            </xsd:sequence>
            <xsd:attribute name="class" type="xsd:string"
use="optional"/>
            <xsd:attribute name="name" type="xsd:string"
use="required"/>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="dynabean">
        <xsd:complexType>
            <xsd:choice maxOccurs="unbounded" minOccurs="0">
                <xsd:element ref="property"/>
                <xsd:element ref="many-to-one"/>
                <xsd:element ref="one-to-one"/>
                <xsd:element ref="component"/>
                <xsd:element ref="dynabean"/>
                <xsd:element ref="map"/>
                <xsd:element ref="set"/>
                <xsd:element ref="list"/>
                <xsd:element ref="bag"/>
                <xsd:element ref="array"/>
                <xsd:element ref="primitive-array"/>
            </xsd:choice>
            <xsd:attribute name="dynaclass" type="xsd:string"
use="required"/>
            <xsd:attribute name="name" type="xsd:string"
use="required"/>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="parent">
        <xsd:annotation>
            <xsd:documentation> The parent element maps a property of
                the component class as a pointer back to the owning
                entity. </xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
            <xsd:attribute name="name" type="xsd:string"
use="required"/>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="map">
        <xsd:annotation>
            <xsd:documentation> Collection declarations nested inside a
                class declaration indicate a foreign key relationship
                from the collection table to the enclosing class.
</xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element maxOccurs="unbounded" minOccurs="0"
ref="meta"/>
                <xsd:element maxOccurs="1" minOccurs="0"
ref="jcs-cache"/>
                <xsd:element ref="key"/>
                <xsd:choice>
                    <xsd:element ref="index"/>
                    <xsd:element ref="composite-index"/>
                    <xsd:element ref="index-many-to-many"/>
                </xsd:choice>
                <xsd:choice>
                    <xsd:element ref="element"/>
                    <xsd:element ref="one-to-many"/>
                    <xsd:element ref="many-to-many"/>
                    <xsd:element ref="composite-element"/>
                </xsd:choice>
            </xsd:sequence>
            <xsd:attribute name="name" type="xsd:string"
use="required"/>
            <xsd:attribute name="table" type="xsd:string"
use="optional"/>
            <xsd:attribute name="schema" type="xsd:string"
use="optional"/>
            <xsd:attribute default="false" name="lazy">
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:enumeration value="true"/>
                        <xsd:enumeration value="false"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:attribute>
            <xsd:attribute default="false" name="inverse">
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:enumeration value="true"/>
                        <xsd:enumeration value="false"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:attribute>
            <xsd:attribute name="sort" type="xsd:string"
use="optional"/>
            <xsd:attribute name="cascade" use="optional">
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:enumeration value="none"/>
                        <xsd:enumeration value="all"/>
                        <xsd:enumeration value="save-update"/>
                        <xsd:enumeration value="delete"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:attribute>
            <xsd:attribute name="order-by" type="xsd:string"
use="optional"/>
            <xsd:attribute name="where" type="xsd:string"
use="optional"/>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="set">
        <xsd:annotation>
            <xsd:documentation> default: none </xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element maxOccurs="unbounded" minOccurs="0"
ref="meta"/>
                <xsd:element maxOccurs="1" minOccurs="0"
ref="jcs-cache"/>
                <xsd:element ref="key"/>
                <xsd:choice>
                    <xsd:element ref="element"/>
                    <xsd:element ref="one-to-many"/>
                    <xsd:element ref="many-to-many"/>
                    <xsd:element ref="composite-element"/>
                </xsd:choice>
            </xsd:sequence>
            <xsd:attribute name="name" type="xsd:string"
use="required"/>
            <xsd:attribute name="table" type="xsd:string"
use="optional"/>
            <xsd:attribute name="schema" type="xsd:string"
use="optional"/>
            <xsd:attribute default="false" name="lazy">
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:enumeration value="true"/>
                        <xsd:enumeration value="false"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:attribute>
            <xsd:attribute default="unsorted" name="sort"
type="xsd:string"/>
            <xsd:attribute default="false" name="inverse">
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:enumeration value="true"/>
                        <xsd:enumeration value="false"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:attribute>
            <xsd:attribute name="cascade" use="optional">
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:enumeration value="none"/>
                        <xsd:enumeration value="all"/>
                        <xsd:enumeration value="save-update"/>
                        <xsd:enumeration value="delete"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:attribute>
            <xsd:attribute name="order-by" type="xsd:string"
use="optional"/>
            <xsd:attribute name="where" type="xsd:string"
use="optional"/>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="bag">
        <xsd:annotation>
            <xsd:documentation> default: none </xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element maxOccurs="unbounded" minOccurs="0"
ref="meta"/>
                <xsd:element maxOccurs="1" minOccurs="0"
ref="jcs-cache"/>
                <xsd:element ref="key"/>
                <xsd:choice>
                    <xsd:element ref="element"/>
                    <xsd:element ref="one-to-many"/>
                    <xsd:element ref="many-to-many"/>
                    <xsd:element ref="composite-element"/>
                </xsd:choice>
            </xsd:sequence>
            <xsd:attribute name="name" type="xsd:string"
use="required"/>
            <xsd:attribute name="table" type="xsd:string"
use="optional"/>
            <xsd:attribute name="schema" type="xsd:string"
use="optional"/>
            <xsd:attribute default="false" name="lazy">
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:enumeration value="true"/>
                        <xsd:enumeration value="false"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:attribute>
            <xsd:attribute default="false" name="inverse">
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:enumeration value="true"/>
                        <xsd:enumeration value="false"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:attribute>
            <xsd:attribute name="cascade" use="optional">
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:enumeration value="none"/>
                        <xsd:enumeration value="all"/>
                        <xsd:enumeration value="save-update"/>
                        <xsd:enumeration value="delete"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:attribute>
            <xsd:attribute name="order-by" type="xsd:string"
use="optional"/>
            <xsd:attribute name="where" type="xsd:string"
use="optional"/>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="list">
        <xsd:annotation>
            <xsd:documentation> default: none </xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element maxOccurs="unbounded" minOccurs="0"
ref="meta"/>
                <xsd:element maxOccurs="1" minOccurs="0"
ref="jcs-cache"/>
                <xsd:element ref="key"/>
                <xsd:element ref="index"/>
                <xsd:choice>
                    <xsd:element ref="element"/>
                    <xsd:element ref="one-to-many"/>
                    <xsd:element ref="many-to-many"/>
                    <xsd:element ref="composite-element"/>
                </xsd:choice>
            </xsd:sequence>
            <xsd:attribute name="name" type="xsd:string"
use="required"/>
            <xsd:attribute name="table" type="xsd:string"
use="optional"/>
            <xsd:attribute name="schema" type="xsd:string"
use="optional"/>
            <xsd:attribute default="false" name="lazy">
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:enumeration value="true"/>
                        <xsd:enumeration value="false"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:attribute>
            <xsd:attribute default="false" name="inverse">
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:enumeration value="true"/>
                        <xsd:enumeration value="false"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:attribute>
            <xsd:attribute name="cascade" use="optional">
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:enumeration value="none"/>
                        <xsd:enumeration value="all"/>
                        <xsd:enumeration value="save-update"/>
                        <xsd:enumeration value="delete"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:attribute>
            <xsd:attribute name="where" type="xsd:string"
use="optional"/>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="array">
        <xsd:annotation>
            <xsd:documentation> default: none </xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element maxOccurs="unbounded" minOccurs="0"
ref="meta"/>
                <xsd:element maxOccurs="1" minOccurs="0"
ref="jcs-cache"/>
                <xsd:element ref="key"/>
                <xsd:element ref="index"/>
                <xsd:choice>
                    <xsd:element ref="element"/>
                    <xsd:element ref="one-to-many"/>
                    <xsd:element ref="many-to-many"/>
                    <xsd:element ref="composite-element"/>
                </xsd:choice>
            </xsd:sequence>
            <xsd:attribute name="name" type="xsd:string"
use="required"/>
            <xsd:attribute name="table" type="xsd:string"
use="optional"/>
            <xsd:attribute name="schema" type="xsd:string"
use="optional"/>
            <xsd:attribute name="element-class" type="xsd:string"
use="optional"/>
            <xsd:attribute name="cascade" use="optional">
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:enumeration value="none"/>
                        <xsd:enumeration value="all"/>
                        <xsd:enumeration value="save-update"/>
                        <xsd:enumeration value="delete"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:attribute>
            <xsd:attribute name="where" type="xsd:string"
use="optional"/>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="primitive-array">
        <xsd:annotation>
            <xsd:documentation> default: none </xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element maxOccurs="unbounded" minOccurs="0"
ref="meta"/>
                <xsd:element maxOccurs="1" minOccurs="0"
ref="jcs-cache"/>
                <xsd:element ref="key"/>
                <xsd:element ref="index"/>
                <xsd:element ref="element"/>
            </xsd:sequence>
            <xsd:attribute name="name" type="xsd:string"
use="required"/>
            <xsd:attribute name="table" type="xsd:string"
use="optional"/>
            <xsd:attribute name="schema" type="xsd:string"
use="optional"/>
            <xsd:attribute name="where" type="xsd:string"
use="optional"/>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="element">
        <xsd:annotation>
            <xsd:documentation> default: none Declares the element
                type of a collection of basic type </xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element maxOccurs="unbounded" minOccurs="0"
ref="column"/>
            </xsd:sequence>
            <xsd:attribute name="column" type="xsd:string"
use="optional"/>
            <xsd:attribute name="type" type="xsd:string"
use="required"/>
            <xsd:attribute name="length" type="xsd:string"
use="optional"/>
            <xsd:attribute default="false" name="not-null">
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:enumeration value="true"/>
                        <xsd:enumeration value="false"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:attribute>
            <xsd:attribute default="false" name="unique">
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:enumeration value="true"/>
                        <xsd:enumeration value="false"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:attribute>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="one-to-many">
        <xsd:annotation>
            <xsd:documentation> One to many association. This tag
                declares the entity-class element type of a collection
                and specifies a one-to-many relational model
</xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
            <xsd:attribute name="class" type="xsd:string"
use="required"/>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="many-to-many">
        <xsd:annotation>
            <xsd:documentation> No column declaration attributes
                required in this case. The primary key column of the
                associated class is already mapped elsewhere. Many to
                many association. This tag declares the entity-class
                element type of a collection and specifies a
                many-to-many relational model </xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element maxOccurs="unbounded" minOccurs="0"
ref="meta"/>
                <xsd:element maxOccurs="unbounded" minOccurs="0"
ref="column"/>
            </xsd:sequence>
            <xsd:attribute name="class" type="xsd:string"
use="required"/>
            <xsd:attribute name="column" type="xsd:string"
use="optional"/>
            <xsd:attribute default="false" name="not-null">
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:enumeration value="true"/>
                        <xsd:enumeration value="false"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:attribute>
            <xsd:attribute default="auto" name="outer-join">
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:enumeration value="true"/>
                        <xsd:enumeration value="false"/>
                        <xsd:enumeration value="auto"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:attribute>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="composite-element">
        <xsd:annotation>
            <xsd:documentation> unique makes no sense here since it
                would make the association one-to-many A composite
                element allows a collection to hold instances of an
                arbitrary class, without the requirement of joining to
                an entity table. Composite elements have component
                semantics - no shared references and ad hoc null value
                semantics. Composite elements may not hold nested
                collections. </xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element maxOccurs="1" minOccurs="0" ref="parent"/>
                <xsd:choice maxOccurs="unbounded" minOccurs="0">
                    <xsd:element ref="property"/>
                    <xsd:element ref="many-to-one"/>
                    <xsd:element ref="nested-composite-element"/>
                </xsd:choice>
            </xsd:sequence>
            <xsd:attribute name="class" type="xsd:string"
use="required"/>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="nested-composite-element">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element maxOccurs="1" minOccurs="0" ref="parent"/>
                <xsd:choice maxOccurs="unbounded" minOccurs="0">
                    <xsd:element ref="property"/>
                    <xsd:element ref="many-to-one"/>
                    <xsd:element ref="nested-composite-element"/>
                </xsd:choice>
            </xsd:sequence>
            <xsd:attribute name="class" type="xsd:string"
use="required"/>
            <xsd:attribute name="name" type="xsd:string"
use="required"/>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="key">
        <xsd:annotation>
            <xsd:documentation> Declares the type, column name (and, in
                the case of toplevel collections, an id generation
                strategy) for the key of a collection table. These keys
                are never exposed to the application.
</xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element maxOccurs="unbounded" minOccurs="0"
ref="column"/>
            </xsd:sequence>
            <xsd:attribute name="column" type="xsd:string"
use="optional"/>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="index">
        <xsd:annotation>
            <xsd:documentation> Declares the type and column mapping for
                a collection index (array or list index, or key of a
                map). </xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element maxOccurs="unbounded" minOccurs="0"
ref="column"/>
            </xsd:sequence>
            <xsd:attribute name="columnx" type="xsd:string"
use="optional"/>
            <xsd:attribute name="type" type="xsd:string"
use="optional"/>
            <xsd:attribute name="length" type="xsd:string"
use="optional"/>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="index-many-to-many">
        <xsd:annotation>
            <xsd:documentation> Many to many association mapped to the
                key of a map. ie. a map keyed on entities.
</xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element maxOccurs="unbounded" minOccurs="0"
ref="column"/>
            </xsd:sequence>
            <xsd:attribute name="class" type="xsd:string"
use="required"/>
            <xsd:attribute name="column" type="xsd:string"
use="optional"/>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="composite-index">
        <xsd:annotation>
            <xsd:documentation> Composite index of a map ie. a map keyed
                on components. </xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
            <xsd:choice maxOccurs="unbounded" minOccurs="1">
                <xsd:element ref="key-property"/>
                <xsd:element ref="key-many-to-one"/>
            </xsd:choice>
            <xsd:attribute name="class" type="xsd:string"
use="required"/>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="generator">
        <xsd:annotation>
            <xsd:documentation> Generators generate unique identifiers.
                The class attribute specifies a Java class implementing
                an id generation algorithm. </xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element maxOccurs="unbounded" minOccurs="0"
ref="param"/>
            </xsd:sequence>
            <xsd:attribute name="class" type="xsd:string"
use="required"/>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="param">
        <xsd:complexType>
            <xsd:simpleContent>
                <xsd:extension base="xsd:string">
                    <xsd:attribute name="name" type="xsd:string"
use="required"/>
                </xsd:extension>
            </xsd:simpleContent>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="column">
        <xsd:annotation>
            <xsd:documentation> The column element is an alternative to
                column attributes and required for mapping associations
                to classes with composite ids. </xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
            <xsd:attribute name="name" type="xsd:string"
use="required"/>
            <xsd:attribute name="length" type="xsd:string"
use="optional"/>
            <xsd:attribute name="not-null" use="optional">
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:enumeration value="true"/>
                        <xsd:enumeration value="false"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:attribute>
            <xsd:attribute name="unique" use="optional">
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:enumeration value="true"/>
                        <xsd:enumeration value="false"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:attribute>
            <xsd:attribute name="unique-key" type="xsd:string"
use="optional"/>
            <xsd:attribute name="sql-type" type="xsd:string"
use="optional"/>
            <xsd:attribute name="index" type="xsd:string"
use="optional"/>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="jcs-cache">
        <xsd:annotation>
            <xsd:documentation> The jcs-cache element enables caching of
                an entity class. </xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
            <xsd:attribute name="usage" use="required">
                <xsd:simpleType>
                    <xsd:restriction base="xsd:string">
                        <xsd:enumeration value="read-only"/>
                        <xsd:enumeration value="read-write"/>
                    </xsd:restriction>
                </xsd:simpleType>
            </xsd:attribute>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="query">
        <xsd:annotation>
            <xsd:documentation> The query element declares a named
                Hibernate query string </xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
            <xsd:simpleContent>
                <xsd:extension base="xsd:string">
                    <xsd:attribute name="name" type="xsd:string"
use="required"/>
                </xsd:extension>
            </xsd:simpleContent>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="meta">
        <xsd:annotation>
            <xsd:documentation> The meta element is used to assign
                meta-level attributes to a class or property. Is
                currently used by codegenerator as a placeholder for
                values that is not directly related to OR mappings.
</xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
            <xsd:simpleContent>
                <xsd:extension base="xsd:string">
                    <xsd:attribute name="attribute" type="xsd:string"
use="required"/>
                </xsd:extension>
            </xsd:simpleContent>
        </xsd:complexType>
    </xsd:element>
</xsd:schema>


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe_at_jaxb.dev.java.net
For additional commands, e-mail: users-help_at_jaxb.dev.java.net