You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jdo-commits@db.apache.org by an...@apache.org on 2008/07/14 09:52:19 UTC

svn commit: r676500 [1/2] - in /db/jdo/trunk/api2/src: java/javax/jdo/annotations/ schema/javax/jdo/

Author: andyj
Date: Mon Jul 14 00:52:19 2008
New Revision: 676500

URL: http://svn.apache.org/viewvc?rev=676500&view=rev
Log:
JDO599 - schema for JDO2.2 with cacheable added. Cacheable annotation updates

Added:
    db/jdo/trunk/api2/src/java/javax/jdo/annotations/Cacheable.java
    db/jdo/trunk/api2/src/schema/javax/jdo/jdo_2_2.xsd
    db/jdo/trunk/api2/src/schema/javax/jdo/jdoquery_2_2.xsd
    db/jdo/trunk/api2/src/schema/javax/jdo/orm_2_2.xsd
Modified:
    db/jdo/trunk/api2/src/java/javax/jdo/annotations/PersistenceCapable.java
    db/jdo/trunk/api2/src/java/javax/jdo/annotations/Persistent.java

Added: db/jdo/trunk/api2/src/java/javax/jdo/annotations/Cacheable.java
URL: http://svn.apache.org/viewvc/db/jdo/trunk/api2/src/java/javax/jdo/annotations/Cacheable.java?rev=676500&view=auto
==============================================================================
--- db/jdo/trunk/api2/src/java/javax/jdo/annotations/Cacheable.java (added)
+++ db/jdo/trunk/api2/src/java/javax/jdo/annotations/Cacheable.java Mon Jul 14 00:52:19 2008
@@ -0,0 +1,37 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package javax.jdo.annotations;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * Annotation to specify that this class/field/property is cacheable
+ * in a Level 2 cache.
+ * This corresponds to the xml attribute "cacheable" of the "class", "field"
+ * and "property" elements.
+ * @version 2.2
+ * @since 2.2
+ */
+@Target({ElementType.TYPE, ElementType.FIELD, ElementType.METHOD}) 
+@Retention(RetentionPolicy.RUNTIME)
+public @interface Cacheable
+{
+	boolean value() default true;
+}
\ No newline at end of file

Modified: db/jdo/trunk/api2/src/java/javax/jdo/annotations/PersistenceCapable.java
URL: http://svn.apache.org/viewvc/db/jdo/trunk/api2/src/java/javax/jdo/annotations/PersistenceCapable.java?rev=676500&r1=676499&r2=676500&view=diff
==============================================================================
--- db/jdo/trunk/api2/src/java/javax/jdo/annotations/PersistenceCapable.java (original)
+++ db/jdo/trunk/api2/src/java/javax/jdo/annotations/PersistenceCapable.java Mon Jul 14 00:52:19 2008
@@ -70,6 +70,11 @@
      */
     Class objectIdClass() default void.class;
 
+    /** Whether this class is cacheable in a Level2 cache.
+     * @since 2.2
+     */
+    boolean cacheable() default true;
+
     /** Any vendor extensions. 
      */
     Extension[] extensions() default {};

Modified: db/jdo/trunk/api2/src/java/javax/jdo/annotations/Persistent.java
URL: http://svn.apache.org/viewvc/db/jdo/trunk/api2/src/java/javax/jdo/annotations/Persistent.java?rev=676500&r1=676499&r2=676500&view=diff
==============================================================================
--- db/jdo/trunk/api2/src/java/javax/jdo/annotations/Persistent.java (original)
+++ db/jdo/trunk/api2/src/java/javax/jdo/annotations/Persistent.java Mon Jul 14 00:52:19 2008
@@ -203,6 +203,11 @@
      */
     int recursionDepth() default 1;
 
+    /** Whether this field/property is cacheable in a Level2 cache.
+     * @since 2.2
+     */
+    boolean cacheable() default true;
+
     /** Vendor extensions for this member. 
      * @return the vendor extensions
      */

Added: db/jdo/trunk/api2/src/schema/javax/jdo/jdo_2_2.xsd
URL: http://svn.apache.org/viewvc/db/jdo/trunk/api2/src/schema/javax/jdo/jdo_2_2.xsd?rev=676500&view=auto
==============================================================================
--- db/jdo/trunk/api2/src/schema/javax/jdo/jdo_2_2.xsd (added)
+++ db/jdo/trunk/api2/src/schema/javax/jdo/jdo_2_2.xsd Mon Jul 14 00:52:19 2008
@@ -0,0 +1,1287 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<xs:schema targetNamespace="http://java.sun.com/xml/ns/jdo/jdo"
+           xmlns="http://java.sun.com/xml/ns/jdo/jdo"
+           xmlns:xs="http://www.w3.org/2001/XMLSchema"
+           version="2.2">
+    <xs:element name="jdo">
+        <xs:complexType>
+            <xs:choice maxOccurs="unbounded">
+                <xs:element ref="extension"/>
+                <xs:element ref="package"/>
+                <xs:element ref="query"/>
+                <xs:element ref="fetch-plan"/>
+            </xs:choice>
+            <xs:attributeGroup ref="attlist.jdo"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.jdo">
+        <xs:attribute name="catalog"/>
+        <xs:attribute name="schema"/>
+    </xs:attributeGroup>
+    <xs:element name="fetch-plan">
+        <xs:complexType>
+            <xs:choice maxOccurs="unbounded">
+                <xs:element ref="fetch-group"/>
+            </xs:choice>
+            <xs:attributeGroup ref="attlist.fetch-plan"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.fetch-plan">
+        <xs:attribute name="name" default=""/>
+        <xs:attribute name="max-fetch-depth" default="1"/>
+        <xs:attribute name="fetch-size" default="0"/>
+    </xs:attributeGroup>
+    <xs:element name="package">
+        <xs:complexType>
+            <xs:choice maxOccurs="unbounded">
+                <xs:element ref="extension"/>
+                <xs:element ref="interface"/>
+                <xs:element ref="class"/>
+                <xs:element ref="sequence"/>
+            </xs:choice>
+            <xs:attributeGroup ref="attlist.package"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.package">
+        <xs:attribute name="name" default=""/>
+        <xs:attribute name="catalog"/>
+        <xs:attribute name="schema"/>
+    </xs:attributeGroup>
+    <xs:element name="interface">
+        <xs:complexType>
+            <xs:choice minOccurs="0" maxOccurs="unbounded">
+                <xs:annotation><xs:documentation>
+                    Please note, 
+                    the following subelements must not occur more than once:
+                    - datastore-identity
+                    - primary-key
+                    - inheritance
+                    - version
+                </xs:documentation></xs:annotation>
+                <xs:element ref="extension"/>
+                <xs:element ref="datastore-identity"/>
+                <xs:element ref="primary-key"/>
+                <xs:element ref="inheritance"/>
+                <xs:element ref="version"/>
+                <xs:element ref="join"/>
+                <xs:element ref="foreign-key"/>
+                <xs:element ref="index"/>
+                <xs:element ref="unique"/>
+                <xs:element ref="property"/>
+                <xs:element ref="query"/>
+                <xs:element ref="fetch-group"/>
+            </xs:choice>
+            <xs:attributeGroup ref="attlist.interface"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.interface">
+        <xs:attribute name="name" use="required"/>
+        <xs:attribute name="table"/>
+        <xs:attribute name="identity-type">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="datastore"/>
+                    <xs:enumeration value="application"/>
+                    <xs:enumeration value="nondurable"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="objectid-class"/>
+        <xs:attribute name="requires-extent" default="true">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="detachable" default="false">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="embedded-only">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="catalog"/>
+        <xs:attribute name="schema"/>
+        <xs:attribute name="cacheable" default="true">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+    </xs:attributeGroup>
+    <xs:element name="property">
+        <xs:complexType>
+            <xs:choice minOccurs="0" maxOccurs="unbounded">
+                <xs:annotation><xs:documentation>
+                    Please note, 
+                    the following subelements must not occur more than once:
+                    - the choice of array, collection and map,
+                    - join
+                    - embedded
+                    - key
+                    - value
+                    - order
+                    - foreign-key
+                    - index
+                    - unique
+                </xs:documentation></xs:annotation>
+                <xs:element ref="extension"/>
+                <xs:choice minOccurs="0" maxOccurs="1">
+                    <xs:element ref="array"/>
+                    <xs:element ref="collection"/>
+                    <xs:element ref="map"/>
+                </xs:choice>
+                <xs:element ref="join"/>
+                <xs:element ref="embedded"/>
+                <xs:element ref="element"/>
+                <xs:element ref="key"/>
+                <xs:element ref="value"/>
+                <xs:element ref="order"/>
+                <xs:element ref="column"/>
+                <xs:element ref="foreign-key"/>
+                <xs:element ref="index"/>
+                <xs:element ref="unique"/>
+            </xs:choice>
+            <xs:attributeGroup ref="attlist.property"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.property">
+        <xs:attribute name="name" use="required"/>
+        <xs:attribute name="persistence-modifier">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="persistent"/>
+                    <xs:enumeration value="transactional"/>
+                    <xs:enumeration value="none"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="default-fetch-group">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="load-fetch-group"/>
+        <xs:attribute name="null-value" default="none">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="default"/>
+                    <xs:enumeration value="exception"/>
+                    <xs:enumeration value="none"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="dependent">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="embedded">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="primary-key" default="false">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="value-strategy"/>
+        <xs:attribute name="sequence"/>
+        <xs:attribute name="serialized">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="field-type"/>
+        <xs:attribute name="table"/>
+        <xs:attribute name="column"/>
+        <xs:attribute name="delete-action">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="restrict"/>
+                    <xs:enumeration value="cascade"/>
+                    <xs:enumeration value="null"/>
+                    <xs:enumeration value="default"/>
+                    <xs:enumeration value="none"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="indexed">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                    <xs:enumeration value="unique"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="unique">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="mapped-by"/>
+        <xs:attribute name="recursion-depth"/>
+        <xs:attribute name="field-name"/>
+        <xs:attribute name="cacheable" default="true">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+    </xs:attributeGroup>
+    <xs:element name="class">
+        <xs:complexType>
+            <xs:choice minOccurs="0" maxOccurs="unbounded">
+                <xs:annotation><xs:documentation>
+                    Please note, 
+                    the following subelements must not occur more than once:
+                    - datastore-identity
+                    - primary-key
+                    - inheritance
+                    - version
+                </xs:documentation></xs:annotation>
+                <xs:element ref="extension"/>
+                <xs:element ref="implements"/>
+                <xs:element ref="datastore-identity"/>
+                <xs:element ref="primary-key"/>
+                <xs:element ref="inheritance"/>
+                <xs:element ref="version"/>
+                <xs:element ref="join"/>
+                <xs:element ref="foreign-key"/>
+                <xs:element ref="index"/>
+                <xs:element ref="unique"/>
+                <xs:element ref="column"/>
+                <xs:element ref="field"/>
+                <xs:element ref="property"/>
+                <xs:element ref="query"/>
+                <xs:element ref="fetch-group"/>
+            </xs:choice>
+            <xs:attributeGroup ref="attlist.class"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.class">
+        <xs:attribute name="name" use="required"/>
+        <xs:attribute name="identity-type">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="application"/>
+                    <xs:enumeration value="datastore"/>
+                    <xs:enumeration value="nondurable"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="objectid-class"/>
+        <xs:attribute name="table"/>
+        <xs:attribute name="requires-extent" default="true">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="persistence-capable-superclass"/>
+        <xs:attribute name="detachable" default="false">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="embedded-only">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="persistence-modifier">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="persistence-capable"/>
+                    <xs:enumeration value="persistence-aware"/>
+                    <xs:enumeration value="non-persistent"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="catalog"/>
+        <xs:attribute name="schema"/>
+        <xs:attribute name="cacheable" default="true">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+    </xs:attributeGroup>
+    <xs:element name="primary-key">
+        <xs:complexType>
+            <xs:choice minOccurs="0" maxOccurs="unbounded">
+                <xs:element ref="extension"/>
+                <xs:element ref="column"/>
+            </xs:choice>
+            <xs:attributeGroup ref="attlist.primary-key"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.primary-key">
+        <xs:attribute name="name"/>
+        <xs:attribute name="column"/>
+    </xs:attributeGroup>
+    <xs:element name="join">
+        <xs:complexType>
+            <xs:choice minOccurs="0" maxOccurs="unbounded">
+                <xs:annotation><xs:documentation>
+                    Please note, 
+                    the following subelements must not occur more than once:
+                    - primary-key
+                    - foreign-key
+                    - index
+                    - unique
+                </xs:documentation></xs:annotation>
+                <xs:element ref="extension"/>
+                <xs:element ref="primary-key"/>
+                <xs:element ref="column"/>
+                <xs:element ref="foreign-key"/>
+                <xs:element ref="index"/>
+                <xs:element ref="unique"/>
+            </xs:choice>
+            <xs:attributeGroup ref="attlist.join"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.join">
+        <xs:attribute name="table"/>
+        <xs:attribute name="column"/>
+        <xs:attribute name="outer" default="false">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="delete-action">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="restrict"/>
+                    <xs:enumeration value="cascade"/>
+                    <xs:enumeration value="null"/>
+                    <xs:enumeration value="default"/>
+                    <xs:enumeration value="none"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="indexed">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                    <xs:enumeration value="unique"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="unique">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+    </xs:attributeGroup>
+    <xs:element name="version">
+        <xs:complexType>
+            <xs:choice minOccurs="0" maxOccurs="unbounded">
+                <xs:annotation><xs:documentation>
+                    Please note, 
+                    the following subelements must not occur more than once:
+                    - index
+                </xs:documentation></xs:annotation>
+                <xs:element ref="extension"/>
+                <xs:element ref="column"/>
+                <xs:element ref="index"/>
+            </xs:choice>
+            <xs:attributeGroup ref="attlist.version"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.version">
+        <xs:attribute name="strategy"/>
+        <xs:attribute name="column"/>
+        <xs:attribute name="indexed">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                    <xs:enumeration value="unique"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+    </xs:attributeGroup>
+    <xs:element name="datastore-identity">
+        <xs:complexType>
+            <xs:choice minOccurs="0" maxOccurs="unbounded">
+                <xs:element ref="extension"/>
+                <xs:element ref="column"/>
+            </xs:choice>
+            <xs:attributeGroup ref="attlist.datastore-identity"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.datastore-identity">
+        <xs:attribute name="column"/>
+        <xs:attribute name="strategy" default="native"/>
+        <xs:attribute name="sequence"/>
+    </xs:attributeGroup>
+    <xs:element name="implements">
+        <xs:complexType>
+            <xs:choice minOccurs="0" maxOccurs="unbounded">
+                <xs:element ref="extension"/>
+                <xs:element ref="property"/>
+            </xs:choice>
+            <xs:attributeGroup ref="attlist.implements"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.implements">
+        <xs:attribute name="name" use="required"/>
+    </xs:attributeGroup>
+    <xs:element name="inheritance">
+        <xs:complexType>
+            <xs:choice minOccurs="0" maxOccurs="unbounded">
+                <xs:annotation><xs:documentation>
+                    Please note, 
+                    the following subelements must not occur more than once:
+                    - join
+                    - discriminator
+                </xs:documentation></xs:annotation>
+                <xs:element ref="extension"/>
+                <xs:element ref="join"/>
+                <xs:element ref="discriminator"/>
+            </xs:choice>
+            <xs:attributeGroup ref="attlist.inheritance"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.inheritance">
+        <xs:attribute name="strategy"/>
+    </xs:attributeGroup>
+    <xs:element name="discriminator">
+        <xs:complexType>
+            <xs:choice minOccurs="0" maxOccurs="unbounded">
+                <xs:annotation><xs:documentation>
+                    Please note, 
+                    the following subelements must not occur more than once:
+                    - index
+                </xs:documentation></xs:annotation>
+                <xs:element ref="extension"/>
+                <xs:element ref="column"/>
+                <xs:element ref="index"/>
+            </xs:choice>
+            <xs:attributeGroup ref="attlist.discriminator"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.discriminator">
+        <xs:attribute name="column"/>
+        <xs:attribute name="value"/>
+        <xs:attribute name="strategy"/>
+        <xs:attribute name="indexed">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                    <xs:enumeration value="unique"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+    </xs:attributeGroup>
+    <xs:element name="column">
+        <xs:complexType>
+            <xs:sequence>
+                <xs:element minOccurs="0" maxOccurs="unbounded" ref="extension"/>
+            </xs:sequence>
+            <xs:attributeGroup ref="attlist.column"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.column">
+        <xs:attribute name="name"/>
+        <xs:attribute name="target"/>
+        <xs:attribute name="target-field"/>
+        <xs:attribute name="jdbc-type"/>
+        <xs:attribute name="sql-type"/>
+        <xs:attribute name="length"/>
+        <xs:attribute name="scale"/>
+        <xs:attribute name="allows-null">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="default-value"/>
+        <xs:attribute name="insert-value"/>
+    </xs:attributeGroup>
+    <xs:element name="field">
+        <xs:complexType>
+            <xs:choice minOccurs="0" maxOccurs="unbounded">
+                <xs:annotation><xs:documentation>
+                    Please note, 
+                    the following subelements must not occur more than once:
+                    - the choice of array, collection, and map
+                    - join
+                    - embedded
+                    - key
+                    - value
+                    - order
+                    - foreign-key
+                    - index
+                    - unique
+                </xs:documentation></xs:annotation>
+                <xs:element ref="extension"/>
+                <xs:choice minOccurs="0" maxOccurs="1">
+                    <xs:element ref="array"/>
+                    <xs:element ref="collection"/>
+                    <xs:element ref="map"/>
+                </xs:choice>
+                <xs:element ref="join"/>
+                <xs:element ref="embedded"/>
+                <xs:element ref="element"/>
+                <xs:element ref="key"/>
+                <xs:element ref="value"/>
+                <xs:element ref="order"/>
+                <xs:element ref="column"/>
+                <xs:element ref="foreign-key"/>
+                <xs:element ref="index"/>
+                <xs:element ref="unique"/>
+            </xs:choice>
+            <xs:attributeGroup ref="attlist.field"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.field">
+        <xs:attribute name="name" use="required"/>
+        <xs:attribute name="persistence-modifier">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="persistent"/>
+                    <xs:enumeration value="transactional"/>
+                    <xs:enumeration value="none"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="field-type"/>
+        <xs:attribute name="table"/>
+        <xs:attribute name="column"/>
+        <xs:attribute name="primary-key" default="false">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="null-value" default="none">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="exception"/>
+                    <xs:enumeration value="default"/>
+                    <xs:enumeration value="none"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="default-fetch-group">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="embedded">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="serialized">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="dependent">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="value-strategy"/>
+        <xs:attribute name="delete-action">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="restrict"/>
+                    <xs:enumeration value="cascade"/>
+                    <xs:enumeration value="null"/>
+                    <xs:enumeration value="default"/>
+                    <xs:enumeration value="none"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="indexed">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                    <xs:enumeration value="unique"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="unique">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="sequence"/>
+        <xs:attribute name="load-fetch-group"/>
+        <xs:attribute name="recursion-depth"/>
+        <xs:attribute name="mapped-by"/>
+        <xs:attribute name="cacheable" default="true">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+    </xs:attributeGroup>
+    <xs:element name="foreign-key">
+        <xs:complexType>
+            <xs:choice minOccurs="0" maxOccurs="unbounded">
+                <xs:annotation><xs:documentation>
+                    Please note, 
+                    the following subelements must not occur more than once:
+                    - the choice of columns, fields and properties
+                </xs:documentation></xs:annotation>
+                <xs:element ref="extension"/>
+                <xs:choice minOccurs="0" maxOccurs="1">
+                    <xs:element minOccurs="0" maxOccurs="unbounded" ref="column"/>
+                    <xs:element minOccurs="0" maxOccurs="unbounded" ref="field"/>
+                    <xs:element minOccurs="0" maxOccurs="unbounded" ref="property"/>
+                </xs:choice>
+            </xs:choice>
+            <xs:attributeGroup ref="attlist.foreign-key"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.foreign-key">
+        <xs:attribute name="table"/>
+        <xs:attribute name="deferred">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="delete-action" default="restrict">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="restrict"/>
+                    <xs:enumeration value="cascade"/>
+                    <xs:enumeration value="null"/>
+                    <xs:enumeration value="default"/>
+                    <xs:enumeration value="none"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="update-action" default="restrict">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="restrict"/>
+                    <xs:enumeration value="cascade"/>
+                    <xs:enumeration value="null"/>
+                    <xs:enumeration value="default"/>
+                    <xs:enumeration value="none"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="unique">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="name"/>
+    </xs:attributeGroup>
+    <xs:element name="collection">
+        <xs:complexType>
+            <xs:sequence>
+                <xs:element minOccurs="0" maxOccurs="unbounded" ref="extension"/>
+            </xs:sequence>
+            <xs:attributeGroup ref="attlist.collection"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.collection">
+        <xs:attribute name="element-type"/>
+        <xs:attribute name="embedded-element">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="dependent-element">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="serialized-element">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+    </xs:attributeGroup>
+    <xs:element name="map">
+        <xs:complexType>
+            <xs:sequence>
+                <xs:element minOccurs="0" maxOccurs="unbounded" ref="extension"/>
+            </xs:sequence>
+            <xs:attributeGroup ref="attlist.map"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.map">
+        <xs:attribute name="key-type"/>
+        <xs:attribute name="embedded-key">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="dependent-key">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="serialized-key">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="value-type"/>
+        <xs:attribute name="embedded-value">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="dependent-value">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="serialized-value">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+    </xs:attributeGroup>
+    <xs:element name="key">
+        <xs:complexType>
+            <xs:choice minOccurs="0" maxOccurs="unbounded">
+                <xs:annotation><xs:documentation>
+                    Please note, 
+                    the following subelements must not occur more than once:
+                    - embedded
+                    - foreign-key
+                    - index
+                    - unique
+                </xs:documentation></xs:annotation>
+                <xs:element ref="extension"/>
+                <xs:element ref="embedded"/>
+                <xs:element ref="column"/>
+                <xs:element ref="foreign-key"/>
+                <xs:element ref="index"/>
+                <xs:element ref="unique"/>
+            </xs:choice>
+            <xs:attributeGroup ref="attlist.key"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.key">
+        <xs:attribute name="column"/>
+        <xs:attribute name="table"/>
+        <xs:attribute name="delete-action">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="restrict"/>
+                    <xs:enumeration value="cascade"/>
+                    <xs:enumeration value="null"/>
+                    <xs:enumeration value="default"/>
+                    <xs:enumeration value="none"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="update-action">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="restrict"/>
+                    <xs:enumeration value="cascade"/>
+                    <xs:enumeration value="null"/>
+                    <xs:enumeration value="default"/>
+                    <xs:enumeration value="none"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="indexed">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                    <xs:enumeration value="unique"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="unique">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="mapped-by"/>
+    </xs:attributeGroup>
+    <xs:element name="value">
+        <xs:complexType>
+            <xs:choice minOccurs="0" maxOccurs="unbounded">
+                <xs:annotation><xs:documentation>
+                    Please note, 
+                    the following subelements must not occur more than once:
+                    - embedded
+                    - foreign-key
+                    - index
+                    - unique
+                </xs:documentation></xs:annotation>
+                <xs:element ref="extension"/>
+                <xs:element ref="embedded"/>
+                <xs:element ref="column"/>
+                <xs:element ref="foreign-key"/>
+                <xs:element ref="index"/>
+                <xs:element ref="unique"/>
+            </xs:choice>
+            <xs:attributeGroup ref="attlist.value"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.value">
+        <xs:attribute name="column"/>
+        <xs:attribute name="table"/>
+        <xs:attribute name="delete-action">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="restrict"/>
+                    <xs:enumeration value="cascade"/>
+                    <xs:enumeration value="null"/>
+                    <xs:enumeration value="default"/>
+                    <xs:enumeration value="none"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="update-action">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="restrict"/>
+                    <xs:enumeration value="cascade"/>
+                    <xs:enumeration value="null"/>
+                    <xs:enumeration value="default"/>
+                    <xs:enumeration value="none"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="indexed">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                    <xs:enumeration value="unique"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="unique">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="mapped-by"/>
+    </xs:attributeGroup>
+    <xs:element name="array">
+        <xs:complexType>
+            <xs:sequence>
+                <xs:element minOccurs="0" maxOccurs="unbounded" ref="extension"/>
+            </xs:sequence>
+            <xs:attributeGroup ref="attlist.array"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.array">
+        <xs:attribute name="element-type"/>
+        <xs:attribute name="embedded-element">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="dependent-element">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="serialized-element">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+    </xs:attributeGroup>
+    <xs:element name="element">
+        <xs:complexType>
+            <xs:choice minOccurs="0" maxOccurs="unbounded">
+                <xs:annotation><xs:documentation>
+                    Please note, 
+                    the following subelements must not occur more than once:
+                    - embedded
+                    - foreign-key
+                    - index
+                    - unique
+                </xs:documentation></xs:annotation>
+                <xs:element ref="extension"/>
+                <xs:element ref="embedded"/>
+                <xs:element ref="column"/>
+                <xs:element ref="foreign-key"/>
+                <xs:element ref="index"/>
+                <xs:element ref="unique"/>
+            </xs:choice>
+            <xs:attributeGroup ref="attlist.element"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.element">
+        <xs:attribute name="column"/>
+        <xs:attribute name="table"/>
+        <xs:attribute name="delete-action">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="restrict"/>
+                    <xs:enumeration value="cascade"/>
+                    <xs:enumeration value="null"/>
+                    <xs:enumeration value="default"/>
+                    <xs:enumeration value="none"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="update-action">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="restrict"/>
+                    <xs:enumeration value="cascade"/>
+                    <xs:enumeration value="null"/>
+                    <xs:enumeration value="default"/>
+                    <xs:enumeration value="none"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="indexed">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                    <xs:enumeration value="unique"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="unique">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="mapped-by"/>
+    </xs:attributeGroup>
+    <xs:element name="order">
+        <xs:complexType>
+            <xs:choice minOccurs="0" maxOccurs="unbounded">
+                <xs:annotation><xs:documentation>
+                    Please note, 
+                    the following subelements must not occur more than once:
+                    - index
+                </xs:documentation></xs:annotation>
+                <xs:element ref="extension"/>
+                <xs:element ref="column"/>
+                <xs:element ref="index"/>
+            </xs:choice>
+            <xs:attributeGroup ref="attlist.order"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.order">
+        <xs:attribute name="column"/>
+        <xs:attribute name="mapped-by"/>
+    </xs:attributeGroup>
+    <xs:element name="fetch-group">
+        <xs:complexType>
+            <xs:choice minOccurs="0" maxOccurs="unbounded">
+                <xs:element ref="extension"/>
+                <xs:element ref="fetch-group"/>
+                <xs:element ref="field"/>
+                <xs:element ref="property"/>
+            </xs:choice>
+            <xs:attributeGroup ref="attlist.fetch-group"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.fetch-group">
+        <xs:attribute name="name" use="required"/>
+        <xs:attribute name="post-load">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+    </xs:attributeGroup>
+    <xs:element name="embedded">
+        <xs:complexType>
+            <xs:choice minOccurs="0" maxOccurs="unbounded">
+                <xs:element ref="extension"/>
+                <xs:element ref="field"/>
+                <xs:element ref="property"/>
+            </xs:choice>
+            <xs:attributeGroup ref="attlist.embedded"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.embedded">
+        <xs:attribute name="owner-field"/>
+        <xs:attribute name="null-indicator-column"/>
+        <xs:attribute name="null-indicator-value"/>
+    </xs:attributeGroup>
+    <xs:element name="sequence">
+        <xs:complexType>
+            <xs:sequence>
+                <xs:element minOccurs="0" maxOccurs="unbounded" ref="extension"/>
+            </xs:sequence>
+            <xs:attributeGroup ref="attlist.sequence"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.sequence">
+        <xs:attribute name="name" use="required"/>
+        <xs:attribute name="datastore-sequence"/>
+        <xs:attribute name="factory-class"/>
+        <xs:attribute name="strategy" use="required">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="nontransactional"/>
+                    <xs:enumeration value="contiguous"/>
+                    <xs:enumeration value="noncontiguous"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+    </xs:attributeGroup>
+    <xs:element name="index">
+        <xs:complexType>
+            <xs:choice minOccurs="0" maxOccurs="unbounded">
+                <xs:annotation><xs:documentation>
+                    Please note, 
+                    the following subelements must not occur more than once:
+                    - the choice of columns, fields or properties
+                </xs:documentation></xs:annotation>
+                <xs:element ref="extension"/>
+                <xs:choice>
+                    <xs:element minOccurs="0" maxOccurs="unbounded" ref="column"/>
+                    <xs:element minOccurs="0" maxOccurs="unbounded" ref="field"/>
+                    <xs:element minOccurs="0" maxOccurs="unbounded" ref="property"/>
+                </xs:choice>
+            </xs:choice>
+            <xs:attributeGroup ref="attlist.index"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.index">
+        <xs:attribute name="name"/>
+        <xs:attribute name="table"/>
+        <xs:attribute name="unique" default="false">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+    </xs:attributeGroup>
+    <xs:element name="query">
+        <xs:complexType mixed="true">
+            <xs:sequence>
+                <xs:element minOccurs="0" maxOccurs="unbounded" ref="extension"/>
+            </xs:sequence>
+            <xs:attributeGroup ref="attlist.query"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.query">
+        <xs:attribute name="name" use="required"/>
+        <xs:attribute name="language"/>
+        <xs:attribute name="unmodifiable" default="false">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="unique">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="result-class"/>
+        <xs:attribute name="fetch-plan"/>
+    </xs:attributeGroup>
+    <xs:element name="unique">
+        <xs:complexType>
+            <xs:choice minOccurs="0" maxOccurs="unbounded">
+                <xs:annotation><xs:documentation>
+                    Please note, 
+                    the following subelements must not occur more than once:
+                    - the choice of columns, fields or properties
+                </xs:documentation></xs:annotation>
+                <xs:element ref="extension"/>
+                <xs:choice>
+                    <xs:element minOccurs="0" maxOccurs="unbounded" ref="column"/>
+                    <xs:element minOccurs="0" maxOccurs="unbounded" ref="field"/>
+                    <xs:element minOccurs="0" maxOccurs="unbounded" ref="property"/>
+                </xs:choice>
+            </xs:choice>
+            <xs:attributeGroup ref="attlist.unique"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.unique">
+        <xs:attribute name="name"/>
+        <xs:attribute name="table"/>
+        <xs:attribute name="deferred" default="false">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+    </xs:attributeGroup>
+    <xs:element name="extension">
+        <xs:complexType>
+            <xs:complexContent>
+                <xs:extension base="any">
+                    <xs:attributeGroup ref="attlist.extension"/>
+                </xs:extension>
+            </xs:complexContent>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.extension">
+        <xs:attribute name="vendor-name" use="required"/>
+        <xs:attribute name="key"/>
+        <xs:attribute name="value"/>
+    </xs:attributeGroup>
+    <xs:complexType name="any" mixed="true">
+        <xs:sequence>
+            <xs:any minOccurs="0" maxOccurs="unbounded" processContents="skip"/>
+        </xs:sequence>
+    </xs:complexType>
+</xs:schema>

Added: db/jdo/trunk/api2/src/schema/javax/jdo/jdoquery_2_2.xsd
URL: http://svn.apache.org/viewvc/db/jdo/trunk/api2/src/schema/javax/jdo/jdoquery_2_2.xsd?rev=676500&view=auto
==============================================================================
--- db/jdo/trunk/api2/src/schema/javax/jdo/jdoquery_2_2.xsd (added)
+++ db/jdo/trunk/api2/src/schema/javax/jdo/jdoquery_2_2.xsd Mon Jul 14 00:52:19 2008
@@ -0,0 +1,116 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<xs:schema targetNamespace="http://java.sun.com/xml/ns/jdo/jdoquery"
+           xmlns="http://java.sun.com/xml/ns/jdo/jdoquery"
+           xmlns:xs="http://www.w3.org/2001/XMLSchema"
+           version="2.2">
+    <xs:element name="jdoquery">
+        <xs:complexType>
+            <xs:choice maxOccurs="unbounded">
+                <xs:element ref="extension"/>
+                <xs:element ref="package"/>
+                <xs:element ref="query"/>
+            </xs:choice>
+        </xs:complexType>
+    </xs:element>
+    <xs:element name="package">
+        <xs:complexType>
+            <xs:choice maxOccurs="unbounded">
+                <xs:element ref="extension"/>
+                <xs:element ref="interface"/>
+                <xs:element ref="class"/>
+            </xs:choice>
+            <xs:attributeGroup ref="attlist.package"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.package">
+        <xs:attribute name="name" default=""/>
+    </xs:attributeGroup>
+    <xs:element name="interface">
+        <xs:complexType>
+            <xs:choice minOccurs="0" maxOccurs="unbounded">
+                <xs:element ref="extension"/>
+                <xs:element ref="query"/>
+            </xs:choice>
+            <xs:attributeGroup ref="attlist.interface"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.interface">
+        <xs:attribute name="name" use="required"/>
+    </xs:attributeGroup>
+    <xs:element name="class">
+        <xs:complexType>
+            <xs:choice minOccurs="0" maxOccurs="unbounded">
+                <xs:element ref="extension"/>
+                <xs:element ref="query"/>
+            </xs:choice>
+            <xs:attributeGroup ref="attlist.class"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.class">
+        <xs:attribute name="name" use="required"/>
+    </xs:attributeGroup>
+    <xs:element name="query">
+        <xs:complexType mixed="true">
+            <xs:sequence>
+                <xs:element minOccurs="0" maxOccurs="unbounded" ref="extension"/>
+            </xs:sequence>
+            <xs:attributeGroup ref="attlist.query"/>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.query">
+        <xs:attribute name="name" use="required"/>
+        <xs:attribute name="language"/>
+        <xs:attribute name="unmodifiable" default="false">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="unique">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+        </xs:attribute>
+        <xs:attribute name="result-class"/>
+    </xs:attributeGroup>
+    <xs:element name="extension">
+        <xs:complexType>
+            <xs:complexContent>
+                <xs:extension base="any">
+                    <xs:attributeGroup ref="attlist.extension"/>
+                </xs:extension>
+            </xs:complexContent>
+        </xs:complexType>
+    </xs:element>
+    <xs:attributeGroup name="attlist.extension">
+        <xs:attribute name="vendor-name" use="required"/>
+        <xs:attribute name="key"/>
+        <xs:attribute name="value"/>
+    </xs:attributeGroup>
+    <xs:complexType name="any" mixed="true">
+        <xs:sequence>
+            <xs:any minOccurs="0" maxOccurs="unbounded" processContents="skip"/>
+        </xs:sequence>
+    </xs:complexType>
+</xs:schema>