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 mb...@apache.org on 2006/02/21 23:45:12 UTC

svn commit: r379611 - in /db/jdo/trunk/api20/src/dtd/javax/jdo: orm.dtd orm.xsd

Author: mbo
Date: Tue Feb 21 14:45:11 2006
New Revision: 379611

URL: http://svn.apache.org/viewcvs?rev=379611&view=rev
Log:
JDO-202: Rearranged the elements in orm.dtd to use the same order as in jdo.dtd.
- Added subelement 'property' to element 'class'.
- Changed attribute 'strategy' in the element 'version' from REQUIRED to IMPLIED.
- Fixed 'implement' subelements.
- Fixed order of subelements in elements 'inheritance'.
- Restricted the values of attribute 'primary-key' in element 'field'.
Changed orm.xsd accordingly.

Modified:
    db/jdo/trunk/api20/src/dtd/javax/jdo/orm.dtd
    db/jdo/trunk/api20/src/dtd/javax/jdo/orm.xsd

Modified: db/jdo/trunk/api20/src/dtd/javax/jdo/orm.dtd
URL: http://svn.apache.org/viewcvs/db/jdo/trunk/api20/src/dtd/javax/jdo/orm.dtd?rev=379611&r1=379610&r2=379611&view=diff
==============================================================================
--- db/jdo/trunk/api20/src/dtd/javax/jdo/orm.dtd (original)
+++ db/jdo/trunk/api20/src/dtd/javax/jdo/orm.dtd Tue Feb 21 14:45:11 2006
@@ -19,7 +19,19 @@
 <!ATTLIST interface catalog CDATA #IMPLIED>
 <!ATTLIST interface schema CDATA #IMPLIED>
 
-<!ELEMENT class (extension*, datastore-identity?, primary-key?, inheritance?, version?, join*, foreign-key*, index*, unique*, column*, field*, query*, extension*)>
+<!ELEMENT property (extension*, join?, embedded?, element?, key?, value?, order?, column*, foreign-key?, index?, unique?, extension*)>
+<!ATTLIST property name CDATA #REQUIRED>
+<!ATTLIST property value-strategy CDATA #IMPLIED>
+<!ATTLIST property sequence CDATA #IMPLIED>
+<!ATTLIST property serialized (true|false) #IMPLIED>
+<!ATTLIST property table CDATA #IMPLIED>
+<!ATTLIST property column CDATA #IMPLIED>
+<!ATTLIST property delete-action (restrict|cascade|null|default|none) #IMPLIED>
+<!ATTLIST property indexed (true|false|unique) #IMPLIED>
+<!ATTLIST property unique (true|false) #IMPLIED>
+<!ATTLIST property mapped-by CDATA #IMPLIED>
+
+<!ELEMENT class (extension*, datastore-identity?, primary-key?, inheritance?, version?, join*, foreign-key*, index*, unique*, column*, field*, property*, query*, extension*)>
 <!ATTLIST class name CDATA #REQUIRED>
 <!ATTLIST class table CDATA #IMPLIED>
 <!ATTLIST class catalog CDATA #IMPLIED>
@@ -37,20 +49,20 @@
 <!ATTLIST join indexed (true|false|unique) #IMPLIED>
 <!ATTLIST join unique (true|false) #IMPLIED>
 
+<!ELEMENT version (extension*, column*, index?, extension*)>
+<!ATTLIST version strategy CDATA #IMPLIED>
+<!ATTLIST version column CDATA #IMPLIED>
+<!ATTLIST version indexed (true|false|unique) #IMPLIED>
+
 <!ELEMENT datastore-identity (extension*, column*, extension*)>
 <!ATTLIST datastore-identity column CDATA #IMPLIED>
 <!ATTLIST datastore-identity strategy CDATA 'native'>
 <!ATTLIST datastore-identity sequence CDATA #IMPLIED>
 
-<!ELEMENT version (extension*, column*, index?, extension*)>
-<!ATTLIST version strategy CDATA #REQUIRED>
-<!ATTLIST version column CDATA #IMPLIED>
-<!ATTLIST version indexed (true|false|unique) #IMPLIED>
-
-<!ELEMENT implements ((property-field)+, (extension)*)>
+<!ELEMENT implements (extension*, property*, extension*)>
 <!ATTLIST implements name CDATA #REQUIRED>
 
-<!ELEMENT inheritance (extension*, discriminator?, join?, extension*)>
+<!ELEMENT inheritance (extension*, join?, discriminator?, extension*)>
 <!ATTLIST inheritance strategy CDATA #IMPLIED>
 
 <!ELEMENT discriminator (extension*, column*, index?, extension*)>
@@ -71,23 +83,11 @@
 <!ATTLIST column default-value CDATA #IMPLIED>
 <!ATTLIST column insert-value CDATA #IMPLIED>
 
-<!ELEMENT property (extension*, join?, embedded?, element?, key?, value?, order?, column*, foreign-key?, index?, unique?, extension*)>
-<!ATTLIST property name CDATA #REQUIRED>
-<!ATTLIST property value-strategy CDATA #IMPLIED>
-<!ATTLIST property sequence CDATA #IMPLIED>
-<!ATTLIST property serialized (true|false) #IMPLIED>
-<!ATTLIST property table CDATA #IMPLIED>
-<!ATTLIST property column CDATA #IMPLIED>
-<!ATTLIST property delete-action (restrict|cascade|null|default|none) #IMPLIED>
-<!ATTLIST property indexed (true|false|unique) #IMPLIED>
-<!ATTLIST property unique (true|false) #IMPLIED>
-<!ATTLIST property mapped-by CDATA #IMPLIED>
-
 <!ELEMENT field (extension*, join?, embedded?, element?, key?, value?, order?, column*, foreign-key?, index?, unique?, extension*)>
 <!ATTLIST field name CDATA #REQUIRED>
 <!ATTLIST field table CDATA #IMPLIED>
 <!ATTLIST field column CDATA #IMPLIED>
-<!ATTLIST field primary-key CDATA #IMPLIED>
+<!ATTLIST field primary-key (true|false) 'false'>
 <!ATTLIST field value-strategy CDATA #IMPLIED>
 <!ATTLIST field delete-action (restrict|cascade|null|default|none) #IMPLIED>
 <!ATTLIST field indexed (true|false|unique) #IMPLIED>
@@ -149,11 +149,6 @@
 <!ATTLIST index table CDATA #IMPLIED>
 <!ATTLIST index unique (true|false) 'false'>
 
-<!ELEMENT unique (extension*, (column* | field* | property*), extension*)>
-<!ATTLIST unique name CDATA #IMPLIED>
-<!ATTLIST unique table CDATA #IMPLIED>
-<!ATTLIST unique deferred (true|false) 'false'>
-
 <!ELEMENT query (#PCDATA|extension)*>
 <!ATTLIST query name CDATA #IMPLIED>
 <!ATTLIST query language CDATA #IMPLIED>
@@ -161,7 +156,13 @@
 <!ATTLIST query unique (true|false) 'false'>
 <!ATTLIST query result-class CDATA #IMPLIED>
 
+<!ELEMENT unique (extension*, (column* | field* | property*), extension*)>
+<!ATTLIST unique name CDATA #IMPLIED>
+<!ATTLIST unique table CDATA #IMPLIED>
+<!ATTLIST unique deferred (true|false) 'false'>
+
 <!ELEMENT extension ANY>
 <!ATTLIST extension vendor-name CDATA #REQUIRED>
 <!ATTLIST extension key CDATA #IMPLIED>
 <!ATTLIST extension value CDATA #IMPLIED>
+

Modified: db/jdo/trunk/api20/src/dtd/javax/jdo/orm.xsd
URL: http://svn.apache.org/viewcvs/db/jdo/trunk/api20/src/dtd/javax/jdo/orm.xsd?rev=379611&r1=379610&r2=379611&view=diff
==============================================================================
--- db/jdo/trunk/api20/src/dtd/javax/jdo/orm.xsd (original)
+++ db/jdo/trunk/api20/src/dtd/javax/jdo/orm.xsd Tue Feb 21 14:45:11 2006
@@ -4,7 +4,7 @@
         <xs:complexType>
             <xs:sequence>
                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="extension"/>
-                <xs:choice minOccurs="1" maxOccurs="unbounded">
+                <xs:choice maxOccurs="unbounded">
                     <xs:element ref="package"/>
                     <xs:element ref="query"/>
                 </xs:choice>
@@ -21,7 +21,7 @@
         <xs:complexType>
             <xs:sequence>
                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="extension"/>
-                <xs:choice minOccurs="1" maxOccurs="unbounded">
+                <xs:choice maxOccurs="unbounded">
                     <xs:element ref="interface"/>
                     <xs:element ref="class"/>
                     <xs:element ref="sequence"/>
@@ -32,7 +32,7 @@
         </xs:complexType>
     </xs:element>
     <xs:attributeGroup name="attlist.package">
-        <xs:attribute name="name" use="required"/>
+        <xs:attribute name="name" default=""/>
         <xs:attribute name="catalog"/>
         <xs:attribute name="schema"/>
     </xs:attributeGroup>
@@ -40,10 +40,10 @@
         <xs:complexType>
             <xs:sequence>
                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="extension"/>
-                <xs:element minOccurs="0" maxOccurs="1" ref="datastore-identity"/>
-                <xs:element minOccurs="0" maxOccurs="1" ref="primary-key"/>
-                <xs:element minOccurs="0" maxOccurs="1" ref="inheritance"/>
-                <xs:element minOccurs="0" maxOccurs="1" ref="version"/>
+                <xs:element minOccurs="0" ref="datastore-identity"/>
+                <xs:element minOccurs="0" ref="primary-key"/>
+                <xs:element minOccurs="0" ref="inheritance"/>
+                <xs:element minOccurs="0" ref="version"/>
                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="join"/>
                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="foreign-key"/>
                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="index"/>
@@ -65,16 +65,16 @@
         <xs:complexType>
             <xs:sequence>
                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="extension"/>
-                <xs:element minOccurs="0" maxOccurs="1" ref="join"/>
-                <xs:element minOccurs="0" maxOccurs="1" ref="embedded"/>
-                <xs:element minOccurs="0" maxOccurs="1" ref="element"/>
-                <xs:element minOccurs="0" maxOccurs="1" ref="key"/>
-                <xs:element minOccurs="0" maxOccurs="1" ref="value"/>
-                <xs:element minOccurs="0" maxOccurs="1" ref="order"/>
-                <xs:element minOccurs="0" maxOccurs="unbounded" ref="column"/>
-                <xs:element minOccurs="0" maxOccurs="1" ref="foreign-key"/>
-                <xs:element minOccurs="0" maxOccurs="1" ref="index"/>
-                <xs:element minOccurs="0" maxOccurs="1" ref="unique"/>
+                <xs:element minOccurs="0" ref="join"/>
+                <xs:element minOccurs="0" ref="embedded"/>
+                <xs:element minOccurs="0" ref="element"/>
+                <xs:element minOccurs="0" ref="key"/>
+                <xs:element minOccurs="0" ref="value"/>
+                <xs:element minOccurs="0" ref="order"/>
+                <xs:element minOccurs="0" maxOccurs="unbounded" ref="column"/>
+                <xs:element minOccurs="0" ref="foreign-key"/>
+                <xs:element minOccurs="0" ref="index"/>
+                <xs:element minOccurs="0" ref="unique"/>
                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="extension"/>
             </xs:sequence>
             <xs:attributeGroup ref="attlist.property"/>
@@ -128,16 +128,17 @@
         <xs:complexType>
             <xs:sequence>
                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="extension"/>
-                <xs:element minOccurs="0" maxOccurs="1" ref="datastore-identity"/>
-                <xs:element minOccurs="0" maxOccurs="1" ref="primary-key"/>
-                <xs:element minOccurs="0" maxOccurs="1" ref="inheritance"/>
-                <xs:element minOccurs="0" maxOccurs="1" ref="version"/>
+                <xs:element minOccurs="0" ref="datastore-identity"/>
+                <xs:element minOccurs="0" ref="primary-key"/>
+                <xs:element minOccurs="0" ref="inheritance"/>
+                <xs:element minOccurs="0" ref="version"/>
                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="join"/>
                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="foreign-key"/>
                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="index"/>
                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="unique"/>
                 <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:element minOccurs="0" maxOccurs="unbounded" ref="query"/>
                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="extension"/>
             </xs:sequence>
@@ -168,11 +169,11 @@
         <xs:complexType>
             <xs:sequence>
                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="extension"/>
-                <xs:element minOccurs="0" maxOccurs="1" ref="primary-key"/>
+                <xs:element minOccurs="0" ref="primary-key"/>
                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="column"/>
-                <xs:element minOccurs="0" maxOccurs="1" ref="foreign-key"/>
-                <xs:element minOccurs="0" maxOccurs="1" ref="index"/>
-                <xs:element minOccurs="0" maxOccurs="1" ref="unique"/>
+                <xs:element minOccurs="0" ref="foreign-key"/>
+                <xs:element minOccurs="0" ref="index"/>
+                <xs:element minOccurs="0" ref="unique"/>
                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="extension"/>
             </xs:sequence>
             <xs:attributeGroup ref="attlist.join"/>
@@ -218,34 +219,19 @@
             </xs:simpleType>
         </xs:attribute>
     </xs:attributeGroup>
-    <xs:element name="datastore-identity">
-        <xs:complexType>
-            <xs:sequence>
-                <xs:element minOccurs="0" maxOccurs="unbounded" ref="extension"/>
-                <xs:element minOccurs="0" maxOccurs="unbounded" ref="column"/>
-                <xs:element minOccurs="0" maxOccurs="unbounded" ref="extension"/>
-            </xs:sequence>
-            <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="version">
         <xs:complexType>
             <xs:sequence>
                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="extension"/>
                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="column"/>
-                <xs:element minOccurs="0" maxOccurs="1" ref="index"/>
+                <xs:element minOccurs="0" ref="index"/>
                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="extension"/>
             </xs:sequence>
             <xs:attributeGroup ref="attlist.version"/>
         </xs:complexType>
     </xs:element>
     <xs:attributeGroup name="attlist.version">
-        <xs:attribute name="strategy" use="required"/>
+        <xs:attribute name="strategy"/>
         <xs:attribute name="column"/>
         <xs:attribute name="indexed">
             <xs:simpleType>
@@ -257,11 +243,26 @@
             </xs:simpleType>
         </xs:attribute>
     </xs:attributeGroup>
+    <xs:element name="datastore-identity">
+        <xs:complexType>
+            <xs:sequence>
+                <xs:element minOccurs="0" maxOccurs="unbounded" ref="extension"/>
+                <xs:element minOccurs="0" maxOccurs="unbounded" ref="column"/>
+                <xs:element minOccurs="0" maxOccurs="unbounded" ref="extension"/>
+            </xs:sequence>
+            <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:sequence>
                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="extension"/>
-                <xs:element minOccurs="1" maxOccurs="unbounded" ref="property-field"/>
+                <xs:element minOccurs="0" maxOccurs="unbounded" ref="property"/>
                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="extension"/>
             </xs:sequence>
             <xs:attributeGroup ref="attlist.implements"/>
@@ -274,8 +275,8 @@
         <xs:complexType>
             <xs:sequence>
                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="extension"/>
-                <xs:element minOccurs="0" maxOccurs="1" ref="discriminator"/>
-                <xs:element minOccurs="0" maxOccurs="1" ref="join"/>
+                <xs:element minOccurs="0" ref="join"/>
+                <xs:element minOccurs="0" ref="discriminator"/>
                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="extension"/>
             </xs:sequence>
             <xs:attributeGroup ref="attlist.inheritance"/>
@@ -289,7 +290,7 @@
             <xs:sequence>
                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="extension"/>
                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="column"/>
-                <xs:element minOccurs="0" maxOccurs="1" ref="index"/>
+                <xs:element minOccurs="0" ref="index"/>
                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="extension"/>
             </xs:sequence>
             <xs:attributeGroup ref="attlist.discriminator"/>
@@ -340,16 +341,16 @@
         <xs:complexType>
             <xs:sequence>
                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="extension"/>
-                <xs:element minOccurs="0" maxOccurs="1" ref="join"/>
-                <xs:element minOccurs="0" maxOccurs="1" ref="embedded"/>
-                <xs:element minOccurs="0" maxOccurs="1" ref="element"/>
-                <xs:element minOccurs="0" maxOccurs="1" ref="key"/>
-                <xs:element minOccurs="0" maxOccurs="1" ref="value"/>
-                <xs:element minOccurs="0" maxOccurs="1" ref="order"/>
-                <xs:element minOccurs="0" maxOccurs="unbounded" ref="column"/>
-                <xs:element minOccurs="0" maxOccurs="1" ref="foreign-key"/>
-                <xs:element minOccurs="0" maxOccurs="1" ref="index"/>
-                <xs:element minOccurs="0" maxOccurs="1" ref="unique"/>
+                <xs:element minOccurs="0" ref="join"/>
+                <xs:element minOccurs="0" ref="embedded"/>
+                <xs:element minOccurs="0" ref="element"/>
+                <xs:element minOccurs="0" ref="key"/>
+                <xs:element minOccurs="0" ref="value"/>
+                <xs:element minOccurs="0" ref="order"/>
+                <xs:element minOccurs="0" maxOccurs="unbounded" ref="column"/>
+                <xs:element minOccurs="0" ref="foreign-key"/>
+                <xs:element minOccurs="0" ref="index"/>
+                <xs:element minOccurs="0" ref="unique"/>
                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="extension"/>
             </xs:sequence>
             <xs:attributeGroup ref="attlist.field"/>
@@ -359,7 +360,14 @@
         <xs:attribute name="name" use="required"/>
         <xs:attribute name="table"/>
         <xs:attribute name="column"/>
-        <xs:attribute name="primary-key"/>
+        <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="delete-action">
             <xs:simpleType>
@@ -452,11 +460,11 @@
         <xs:complexType>
             <xs:sequence>
                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="extension"/>
-                <xs:element minOccurs="0" maxOccurs="1" ref="embedded"/>
+                <xs:element minOccurs="0" ref="embedded"/>
                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="column"/>
-                <xs:element minOccurs="0" maxOccurs="1" ref="foreign-key"/>
-                <xs:element minOccurs="0" maxOccurs="1" ref="index"/>
-                <xs:element minOccurs="0" maxOccurs="1" ref="unique"/>
+                <xs:element minOccurs="0" ref="foreign-key"/>
+                <xs:element minOccurs="0" ref="index"/>
+                <xs:element minOccurs="0" ref="unique"/>
                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="extension"/>
             </xs:sequence>
             <xs:attributeGroup ref="attlist.key"/>
@@ -510,11 +518,11 @@
         <xs:complexType>
             <xs:sequence>
                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="extension"/>
-                <xs:element minOccurs="0" maxOccurs="1" ref="embedded"/>
+                <xs:element minOccurs="0" ref="embedded"/>
                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="column"/>
-                <xs:element minOccurs="0" maxOccurs="1" ref="foreign-key"/>
-                <xs:element minOccurs="0" maxOccurs="1" ref="index"/>
-                <xs:element minOccurs="0" maxOccurs="1" ref="unique"/>
+                <xs:element minOccurs="0" ref="foreign-key"/>
+                <xs:element minOccurs="0" ref="index"/>
+                <xs:element minOccurs="0" ref="unique"/>
                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="extension"/>
             </xs:sequence>
             <xs:attributeGroup ref="attlist.value"/>
@@ -568,11 +576,11 @@
         <xs:complexType>
             <xs:sequence>
                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="extension"/>
-                <xs:element minOccurs="0" maxOccurs="1" ref="embedded"/>
+                <xs:element minOccurs="0" ref="embedded"/>
                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="column"/>
-                <xs:element minOccurs="0" maxOccurs="1" ref="foreign-key"/>
-                <xs:element minOccurs="0" maxOccurs="1" ref="index"/>
-                <xs:element minOccurs="0" maxOccurs="1" ref="unique"/>
+                <xs:element minOccurs="0" ref="foreign-key"/>
+                <xs:element minOccurs="0" ref="index"/>
+                <xs:element minOccurs="0" ref="unique"/>
                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="extension"/>
             </xs:sequence>
             <xs:attributeGroup ref="attlist.element"/>
@@ -626,7 +634,7 @@
             <xs:sequence>
                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="extension"/>
                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="column"/>
-                <xs:element minOccurs="0" maxOccurs="1" ref="index"/>
+                <xs:element minOccurs="0" ref="index"/>
                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="extension"/>
             </xs:sequence>
             <xs:attributeGroup ref="attlist.order"/>
@@ -702,32 +710,6 @@
             </xs:simpleType>
         </xs:attribute>
     </xs:attributeGroup>
-    <xs:element name="unique">
-        <xs:complexType>
-            <xs:sequence>
-                <xs:element minOccurs="0" maxOccurs="unbounded" 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:element minOccurs="0" maxOccurs="unbounded" ref="extension"/>
-            </xs:sequence>
-            <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="query">
         <xs:complexType mixed="true">
             <xs:sequence>
@@ -756,6 +738,32 @@
             </xs:simpleType>
         </xs:attribute>
         <xs:attribute name="result-class"/>
+    </xs:attributeGroup>
+    <xs:element name="unique">
+        <xs:complexType>
+            <xs:sequence>
+                <xs:element minOccurs="0" maxOccurs="unbounded" 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:element minOccurs="0" maxOccurs="unbounded" ref="extension"/>
+            </xs:sequence>
+            <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>