You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jdo-dev@db.apache.org by Michelle Caisse <Mi...@Sun.COM> on 2005/09/07 01:57:47 UTC

patch for review: updates to dtd, xsd

Hi,

I've attached a patch that contains updates to the api20 jdo.dtd, 
orm.dtd, and jdo.xsd.  The updates are based on the working spec as of 
Friday, 9/2.  I've also attached the xml schema file because the diff is 
hard to read.  Please let me know if you see any errors.

Thanks,
Michelle

Re: patch for review: updates to dtd, xsd

Posted by Craig Russell <Cr...@Sun.COM>.
Hi,

On Sep 7, 2005, at 9:31 AM, Michael Watzek wrote:

> Hi Michelle,
>
> you are right!
>
> I wonder if the example in section 18.7 has a bug concerning the  
> table attribute in the join element. Section 18.8 specifies:
>
> "For join elements nested inside field elements, the table  
> attribute is not allowed. The table attribute from the field  
> element specifies the table to which the join applies."
>
> This reads as if the table attribute must be specified on the field  
> element, right?

Right. I've fixed the spec as follows:

<field name="projects" table="EMP_PROJ">
   <collection element-type="Project"/>
   <join>
     <primary-key name="EMP_PROJ_PK">
       <column name="EMPID"/>
       <column name="PROJID"/>
     </primary-key>
     <column name="EMPID" target="ID"/>
   </join>
   <element>
     <column name="PROJID" target="ID"/>
   </element>
</field>

Good catch.

Craig
>
> Regards,
> Michael
>
>
>> Hi Michael,
>> This is more a question for Craig and the expert group, but I  
>> don't think that primary-key, column, and foreign-key within a  
>> join are mutually exclusive.  If you look at the example in  
>> section 18.7 of the spec, both primary-key and column are used.   
>> The column elements name the columns used to join to the primary  
>> key columns of the primary table; primary-key and foreign-key  
>> elements are used to provide information about the pk and fk  
>> columns of the join table.
>> -- Michelle
>> Michael Watzek wrote:
>>
>>> Hi Michelle,
>>>
>>> I have a question concerning
>>>
>>> <!ELEMENT join (extension*, primary-key?, column*, foreign-key?,  
>>> index?, unique?, extension*)>
>>>
>>> Does it make sense to declare elements "primary-key", "column",  
>>> "foreign-key" as either/or content?
>>>
>>> Regards,
>>> Michael
>>>
>>>
>>>> Hi,
>>>>
>>>> I've attached a patch that contains updates to the api20  
>>>> jdo.dtd, orm.dtd, and jdo.xsd.  The updates are based on the  
>>>> working spec as of Friday, 9/2.  I've also attached the xml  
>>>> schema file because the diff is hard to read.  Please let me  
>>>> know if you see any errors.
>>>>
>>>> Thanks,
>>>> Michelle
>>>>
>>>>
>> [patch deleted]
>>
>
>
> -- 
> -------------------------------------------------------------------
> Michael Watzek                  Tech@Spree Engineering GmbH
> mailto:mwa.tech@spree.de        Buelowstr. 66
> Tel.:  ++49/30/235 520 36       10783 Berlin - Germany
> Fax.:  ++49/30/217 520 12       http://www.spree.de/
> -------------------------------------------------------------------
>

Craig Russell
Architect, Sun Java Enterprise System http://java.sun.com/products/jdo
408 276-5638 mailto:Craig.Russell@sun.com
P.S. A good JDO? O, Gasp!


Re: patch for review: updates to dtd, xsd

Posted by Michelle Caisse <Mi...@Sun.COM>.
Hi Michael,

I think you're right about that.  I think this is a bug in the example 
in the spec.  Do you agree, Craig?

-- :Michelle

Michael Watzek wrote:

> Hi Michelle,
>
> you are right!
>
> I wonder if the example in section 18.7 has a bug concerning the table 
> attribute in the join element. Section 18.8 specifies:
>
> "For join elements nested inside field elements, the table attribute 
> is not allowed. The table attribute from the field element specifies 
> the table to which the join applies."
>
> This reads as if the table attribute must be specified on the field 
> element, right?
>
> Regards,
> Michael
>
>> Hi Michael,
>>
>> This is more a question for Craig and the expert group, but I don't 
>> think that primary-key, column, and foreign-key within a join are 
>> mutually exclusive.  If you look at the example in section 18.7 of 
>> the spec, both primary-key and column are used.  The column elements 
>> name the columns used to join to the primary key columns of the 
>> primary table; primary-key and foreign-key elements are used to 
>> provide information about the pk and fk columns of the join table.
>>
>> -- Michelle
>>
>> Michael Watzek wrote:
>>
>>> Hi Michelle,
>>>
>>> I have a question concerning
>>>
>>> <!ELEMENT join (extension*, primary-key?, column*, foreign-key?, 
>>> index?, unique?, extension*)>
>>>
>>> Does it make sense to declare elements "primary-key", "column", 
>>> "foreign-key" as either/or content?
>>>
>>> Regards,
>>> Michael
>>>
>>>> Hi,
>>>>
>>>> I've attached a patch that contains updates to the api20 jdo.dtd, 
>>>> orm.dtd, and jdo.xsd.  The updates are based on the working spec as 
>>>> of Friday, 9/2.  I've also attached the xml schema file because the 
>>>> diff is hard to read.  Please let me know if you see any errors.
>>>>
>>>> Thanks,
>>>> Michelle
>>>>
>> [patch deleted]
>
>
>


Re: patch for review: updates to dtd, xsd

Posted by Michael Watzek <mw...@spree.de>.
Hi Michelle,

you are right!

I wonder if the example in section 18.7 has a bug concerning the table 
attribute in the join element. Section 18.8 specifies:

"For join elements nested inside field elements, the table attribute is 
not allowed. The table attribute from the field element specifies the 
table to which the join applies."

This reads as if the table attribute must be specified on the field 
element, right?

Regards,
Michael

> Hi Michael,
> 
> This is more a question for Craig and the expert group, but I don't 
> think that primary-key, column, and foreign-key within a join are 
> mutually exclusive.  If you look at the example in section 18.7 of the 
> spec, both primary-key and column are used.  The column elements name 
> the columns used to join to the primary key columns of the primary 
> table; primary-key and foreign-key elements are used to provide 
> information about the pk and fk columns of the join table.
> 
> -- Michelle
> 
> Michael Watzek wrote:
> 
>> Hi Michelle,
>>
>> I have a question concerning
>>
>> <!ELEMENT join (extension*, primary-key?, column*, foreign-key?, 
>> index?, unique?, extension*)>
>>
>> Does it make sense to declare elements "primary-key", "column", 
>> "foreign-key" as either/or content?
>>
>> Regards,
>> Michael
>>
>>> Hi,
>>>
>>> I've attached a patch that contains updates to the api20 jdo.dtd, 
>>> orm.dtd, and jdo.xsd.  The updates are based on the working spec as 
>>> of Friday, 9/2.  I've also attached the xml schema file because the 
>>> diff is hard to read.  Please let me know if you see any errors.
>>>
>>> Thanks,
>>> Michelle
>>>
> [patch deleted]


-- 
-------------------------------------------------------------------
Michael Watzek                  Tech@Spree Engineering GmbH
mailto:mwa.tech@spree.de        Buelowstr. 66
Tel.:  ++49/30/235 520 36       10783 Berlin - Germany
Fax.:  ++49/30/217 520 12       http://www.spree.de/
-------------------------------------------------------------------

Re: patch for review: updates to dtd, xsd

Posted by Michelle Caisse <Mi...@Sun.COM>.
Hi Michael,

This is more a question for Craig and the expert group, but I don't 
think that primary-key, column, and foreign-key within a join are 
mutually exclusive.  If you look at the example in section 18.7 of the 
spec, both primary-key and column are used.  The column elements name 
the columns used to join to the primary key columns of the primary 
table; primary-key and foreign-key elements are used to provide 
information about the pk and fk columns of the join table.

-- Michelle

Michael Watzek wrote:

> Hi Michelle,
>
> I have a question concerning
>
> <!ELEMENT join (extension*, primary-key?, column*, foreign-key?, 
> index?, unique?, extension*)>
>
> Does it make sense to declare elements "primary-key", "column", 
> "foreign-key" as either/or content?
>
> Regards,
> Michael
>
>> Hi,
>>
>> I've attached a patch that contains updates to the api20 jdo.dtd, 
>> orm.dtd, and jdo.xsd.  The updates are based on the working spec as 
>> of Friday, 9/2.  I've also attached the xml schema file because the 
>> diff is hard to read.  Please let me know if you see any errors.
>>
>> Thanks,
>> Michelle
>>
[patch deleted]

Re: patch for review: updates to dtd, xsd

Posted by Michael Watzek <mw...@spree.de>.
Hi Michelle,

I have a question concerning

<!ELEMENT join (extension*, primary-key?, column*, foreign-key?, index?, 
unique?, extension*)>

Does it make sense to declare elements "primary-key", "column", 
"foreign-key" as either/or content?

Regards,
Michael
> Hi,
> 
> I've attached a patch that contains updates to the api20 jdo.dtd, 
> orm.dtd, and jdo.xsd.  The updates are based on the working spec as of 
> Friday, 9/2.  I've also attached the xml schema file because the diff is 
> hard to read.  Please let me know if you see any errors.
> 
> Thanks,
> Michelle
> 
> 
> ------------------------------------------------------------------------
> 
> <?xml version="1.0" encoding="UTF-8"?>
> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
>     <xs:element name="jdo">
>         <xs:complexType>
>             <xs:sequence>
>                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="extension"/>
>                 <xs:choice maxOccurs="unbounded">
>                     <xs:element ref="package"/>
>                     <xs:element ref="query"/>
>                 </xs:choice>
>                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="extension"/>
>             </xs:sequence>
>             <xs:attributeGroup ref="attlist.jdo"/>
>         </xs:complexType>
>     <xs:attributeGroup name="attlist.jdo">
>         <xs:attribute name="catalog"/>
>         <xs:attribute name="schema"/>
>     </xs:attributeGroup>
>     </xs:element>
>     <xs:element name="package">
>         <xs:complexType>
>             <xs:sequence>
>                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="extension"/>
>                 <xs:choice maxOccurs="unbounded">
>                     <xs:element ref="interface"/>
>                     <xs:element ref="class"/>
>                     <xs:element ref="sequence"/>
>                 </xs:choice>
>                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="extension"/>
>             </xs:sequence>
>             <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:sequence>
>                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="extension"/>
>                 <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="property"/>
>                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="query"/>
>                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="fetch-group"/>
>                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="extension"/>
>             </xs:sequence>
>             <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="catalog"/>
>         <xs:attribute name="schema"/>
>     </xs:attributeGroup>
>     <xs:element name="property">
>         <xs:complexType>
>             <xs:sequence>
>                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="extension"/>
>                 <xs:choice minOccurs="0">
>                     <xs:element ref="array"/>
>                     <xs:element ref="collection"/>
>                     <xs:element ref="map"/>
>                 </xs:choice>
>                 <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"/>
>         </xs:complexType>
>     </xs:element>
>     <xs:attributeGroup name="attlist.property">
>         <xs:attribute name="name" use="required"/>
>         <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="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="fetch-group"/>
>         <xs:attribute name="fetch-depth"/>
>         <xs:attribute name="field-name"/>
>     </xs:attributeGroup>
>     <xs:element name="class">
>         <xs:complexType>
>             <xs:sequence>
>                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="extension"/>
>                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="implements"/>
>                 <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="field"/>
>                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="query"/>
>                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="fetch-group"/>
>                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="extension"/>
>             </xs:sequence>
>             <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:attributeGroup>
>     <xs:element name="primary-key">
>         <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.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:sequence>
>                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="extension"/>
>                 <xs:element minOccurs="0" ref="primary-key"/>
>                 <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.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:sequence>
>                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="extension"/>
>                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="column"/>
>                 <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"/>
>         <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: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="0" maxOccurs="unbounded" ref="property"/>
>                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="extension"/>
>             </xs:sequence>
>             <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:sequence>
>                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="extension"/>
>                 <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"/>
>         </xs:complexType>
>     </xs:element>
>     <xs:attributeGroup name="attlist.inheritance">
>         <xs:attribute name="strategy"/>
>     </xs:attributeGroup>
>     <xs:element name="discriminator">
>         <xs:complexType>
>             <xs:sequence>
>                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="extension"/>
>                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="column"/>
>                 <xs:element minOccurs="0" ref="index"/>
>                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="extension"/>
>             </xs:sequence>
>             <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:attribute name="default-value"/>
>         <xs:attribute name="insert-value"/>
>     </xs:attributeGroup>
>     <xs:element name="field">
>         <xs:complexType>
>             <xs:sequence>
>                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="extension"/>
>                 <xs:choice minOccurs="0">
>                     <xs:element ref="array"/>
>                     <xs:element ref="collection"/>
>                     <xs:element ref="map"/>
>                 </xs:choice>
>                 <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="index"/>
>                 <xs:element minOccurs="0" ref="unique"/>
>                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="extension"/>
>             </xs:sequence>
>             <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="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="foreign-key"/>
>         <xs:attribute name="load-fetch-group"/>
>         <xs:attribute name="fetch-depth"/>
>         <xs:attribute name="mapped-by"/>
>     </xs:attributeGroup>
>     <xs:element name="foreign-key">
>         <xs:complexType>
>             <xs:sequence>
>                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="extension"/>
>                 <xs:choice minOccurs="0" maxOccurs="unbounded">
>                     <xs:element ref="column"/>
>                     <xs:element ref="field"/>
>                     <xs:element ref="property"/>
>                 </xs:choice>
>                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="extension"/>
>             </xs:sequence>
>             <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="cascade"/>
>                     <xs:enumeration value="restrict"/>
>                     <xs:enumeration value="null"/>
>                     <xs:enumeration value="default"/>
>                 </xs:restriction>
>             </xs:simpleType>
>         </xs:attribute>
>         <xs:attribute name="update-action" default="restrict">
>             <xs:simpleType>
>                 <xs:restriction base="xs:token">
>                     <xs:enumeration value="cascade"/>
>                     <xs:enumeration value="restrict"/>
>                     <xs:enumeration value="null"/>
>                     <xs:enumeration value="default"/>
>                 </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:sequence>
>                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="extension"/>
>                 <xs:element minOccurs="0" ref="embedded"/>
>                 <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.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="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:sequence>
>                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="extension"/>
>                 <xs:element minOccurs="0" ref="embedded"/>
>                 <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.value"/>
>         </xs:complexType>
>     </xs:element>
>     <xs:attributeGroup name="attlist.value">
>         <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: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="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:sequence>
>                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="extension"/>
>                 <xs:element minOccurs="0" ref="embedded"/>
>                 <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.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: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:sequence>
>                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="extension"/>
>                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="column"/>
>                 <xs:element minOccurs="0" ref="index"/>
>                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="extension"/>
>             </xs:sequence>
>             <xs:attributeGroup ref="attlist.order"/>
>         </xs:complexType>
>     </xs:element>
>     <xs:attributeGroup name="attlist.order">
>         <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="fetch-group">
>         <xs:complexType>
>             <xs:choice minOccurs="0" maxOccurs="unbounded">
>                 <xs:element ref="fetch-group"/>
>                 <xs:element ref="field"/>
>             </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:sequence>
>                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="extension"/>
>                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="field"/>
>                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="extension"/>
>             </xs:sequence>
>             <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:sequence>
>                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="extension"/>
>                 <xs:choice minOccurs="0" maxOccurs="unbounded">
>                     <xs:element ref="column"/>
>                     <xs:element ref="field"/>
>                     <xs:element ref="property"/>
>                 </xs:choice>
>                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="extension"/>
>             </xs:sequence>
>             <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"/>
>         <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" 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="result-class"/>
>     </xs:attributeGroup>
>     <xs:element name="unique">
>         <xs:complexType>
>             <xs:sequence>
>                 <xs:element minOccurs="0" maxOccurs="unbounded" ref="extension"/>
>                 <xs:choice minOccurs="0" maxOccurs="unbounded">
>                     <xs:element ref="column"/>
>                     <xs:element ref="field"/>
>                     <xs:element 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>
>             <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>
> 
> 
> ------------------------------------------------------------------------
> 
> Index: src/dtd/javax/jdo/jdo.dtd
> ===================================================================
> --- src/dtd/javax/jdo/jdo.dtd	(revision 233330)
> +++ src/dtd/javax/jdo/jdo.dtd	(working copy)
> @@ -1,19 +1,25 @@
> -<!-- The following document headers belong in the user's .jdo file
>  <?xml version="1.0" encoding="UTF-8"?>
> +<!-- The DOCTYPE should be as follows for metadata documents.
>  <!DOCTYPE jdo
>      PUBLIC "-//Sun Microsystems, Inc.//DTD Java Data Objects Metadata 2.0//EN"
>      "http://java.sun.com/dtd/jdo_2_0.dtd">
>  -->
>  <!ELEMENT jdo (extension*, (package|query)+, extension*)>
> +<!ATTLIST jdo catalog CDATA #IMPLIED>
> +<!ATTLIST jdo schema CDATA #IMPLIED>
>  <!ELEMENT package (extension*, (interface|class|sequence)+, extension*)>
>  <!ATTLIST package name CDATA ''>
> -<!ELEMENT interface (extension*, datastore-identity?, inheritance?, version?, join*, foreign-key*, index*, unique*, property*, query*, fetch-group*, extension*)>
> +<!ATTLIST package catalog CDATA #IMPLIED>
> +<!ATTLIST package schema CDATA #IMPLIED>
> +<!ELEMENT interface (extension*, datastore-identity?, primary-key?, inheritance?, version?, join*, foreign-key*, index*, unique*, property*, query*, fetch-group*, extension*)>
>  <!ATTLIST interface name CDATA #REQUIRED>
>  <!ATTLIST interface table CDATA #IMPLIED>
>  <!ATTLIST interface identity-type (datastore|application|nondurable) #IMPLIED>
>  <!ATTLIST interface objectid-class CDATA #IMPLIED>
>  <!ATTLIST interface requires-extent (true|false) 'true'>
>  <!ATTLIST interface detachable (true|false) 'false'>
> +<!ATTLIST interface catalog CDATA #IMPLIED>
> +<!ATTLIST interface schema CDATA #IMPLIED>
>  
>  <!ELEMENT property (extension*, (array|collection|map)?, join?, embedded?, element?, key?, value?, order?, column*, foreign-key?, index?, unique?, extension*)>
>  <!ATTLIST property name CDATA #REQUIRED>
> @@ -36,7 +42,7 @@
>  <!ATTLIST property fetch-depth CDATA #IMPLIED>
>  <!ATTLIST property field-name CDATA #IMPLIED>
>  
> -<!ELEMENT class (extension*, implements*, datastore-identity?, inheritance?, version?, join*, foreign-key*, index*, unique*, field*, query*, fetch-group*, extension*)>
> +<!ELEMENT class (extension*, implements*, datastore-identity?, primary-key?, inheritance?, version?, join*, foreign-key*, index*, unique*, column*, field*, property*, query*, fetch-group*, extension*)>
>  <!ATTLIST class name CDATA #REQUIRED>
>  <!ATTLIST class identity-type (application|datastore|nondurable) #IMPLIED>
>  <!ATTLIST class objectid-class CDATA #IMPLIED>
> @@ -46,8 +52,14 @@
>  <!ATTLIST class detachable (true|false) 'false'>
>  <!ATTLIST class embedded-only (true|false) #IMPLIED>
>  <!ATTLIST class persistence-modifier (persistence-capable|persistence-aware|non-persistent) #IMPLIED>
> +<!ATTLIST class catalog CDATA #IMPLIED>
> +<!ATTLIST class schema CDATA #IMPLIED>
>  
> -<!ELEMENT join (extension*, column*, foreign-key?, index?, unique?, extension*)>
> +<!ELEMENT primary-key (extension*, column*, extension*)>
> +<!ATTLIST primary-key name CDATA #IMPLIED>
> +<!ATTLIST primary-key column CDATA #IMPLIED>
> +
> +<!ELEMENT join (extension*, primary-key?, column*, foreign-key?, index?, unique?, extension*)>
>  <!ATTLIST join table CDATA #IMPLIED>
>  <!ATTLIST join column CDATA #IMPLIED>
>  <!ATTLIST join outer (true|false) 'false'>
> @@ -87,6 +99,7 @@
>  <!ATTLIST column scale CDATA #IMPLIED>
>  <!ATTLIST column allows-null CDATA #IMPLIED>
>  <!ATTLIST column default-value CDATA #IMPLIED>
> +<!ATTLIST column insert-value CDATA #IMPLIED>
>  
>  <!ELEMENT field (extension*, (array|collection|map)?, join?, embedded?, element?, key?, value?, order?, column*, foreign-key?, index?, unique?, extension*)>
>  <!ATTLIST field name CDATA #REQUIRED>
> @@ -104,7 +117,6 @@
>  <!ATTLIST field indexed (true|false|unique) #IMPLIED>
>  <!ATTLIST field unique (true|false) #IMPLIED>
>  <!ATTLIST field sequence CDATA #IMPLIED>
> -<!ATTLIST field foreign-key CDATA #IMPLIED>
>  <!ATTLIST field load-fetch-group CDATA #IMPLIED>
>  <!ATTLIST field fetch-depth CDATA #IMPLIED>
>  <!ATTLIST field mapped-by CDATA #IMPLIED>
> @@ -121,39 +133,42 @@
>  <!ATTLIST collection element-type CDATA #IMPLIED>
>  <!ATTLIST collection embedded-element (true|false) #IMPLIED>
>  <!ATTLIST collection dependent-element (true|false) #IMPLIED>
> +<!ATTLIST collection serialized-element (true|false) #IMPLIED>
>  
>  <!ELEMENT map (extension)*>
>  <!ATTLIST map key-type CDATA #IMPLIED>
>  <!ATTLIST map embedded-key (true|false) #IMPLIED>
>  <!ATTLIST map dependent-key (true|false) #IMPLIED>
> +<!ATTLIST map serialized-key (true|false) #IMPLIED>
>  <!ATTLIST map value-type CDATA #IMPLIED>
>  <!ATTLIST map embedded-value (true|false) #IMPLIED>
>  <!ATTLIST map dependent-value (true|false) #IMPLIED>
> +<!ATTLIST map serialized-value (true|false) #IMPLIED>
>  
>  <!ELEMENT key (extension*, embedded?, column*, foreign-key?, index?, unique?, extension*)>
>  <!ATTLIST key column CDATA #IMPLIED>
>  <!ATTLIST key table CDATA #IMPLIED>
> -<!ATTLIST key serialized (true|false) #IMPLIED>
>  <!ATTLIST key delete-action (restrict|cascade|null|default|none) #IMPLIED>
>  <!ATTLIST key indexed (true|false|unique) #IMPLIED>
>  <!ATTLIST key unique (true|false) #IMPLIED>
> +<!ATTLIST key mapped-by CDATA #IMPLIED>
>  
>  <!ELEMENT value (extension*, embedded?, column*, foreign-key?, index?, unique?, extension*)>
> -<!ATTLIST value serialized (true|false) #IMPLIED>
>  <!ATTLIST value table CDATA #IMPLIED>
>  <!ATTLIST value column CDATA #IMPLIED>
>  <!ATTLIST value delete-action (restrict|cascade|null|default|none) #IMPLIED>
>  <!ATTLIST value indexed (true|false|unique) #IMPLIED>
>  <!ATTLIST value unique (true|false) #IMPLIED>
> +<!ATTLIST value mapped-by CDATA #IMPLIED>
>  
>  <!ELEMENT array (extension*)>
>  <!ATTLIST array embedded-element (true|false) #IMPLIED>
>  <!ATTLIST array dependent-element (true|false) #IMPLIED>
> +<!ATTLIST array serialized-element (true|false) #IMPLIED>
>  
>  <!ELEMENT element (extension*, embedded?, column*, foreign-key?, index?, unique?, extension*)>
>  <!ATTLIST element column CDATA #IMPLIED>
>  <!ATTLIST element table CDATA #IMPLIED>
> -<!ATTLIST element serialized (true|false) #IMPLIED>
>  <!ATTLIST element delete-action (restrict|cascade|null|default|none) #IMPLIED>
>  <!ATTLIST element update-action CDATA #IMPLIED>
>  <!ATTLIST element indexed (true|false|unique) #IMPLIED>
> @@ -162,6 +177,7 @@
>  <!ELEMENT order (extension*, column*, index?, extension*)>
>  <!ATTLIST order column CDATA #IMPLIED>
>  <!ATTLIST order indexed (true|false|unique) #IMPLIED>
> +<!ATTLIST order mapped-by CDATA #IMPLIED>
>  
>  <!ELEMENT fetch-group (fetch-group|field)*>
>  <!ATTLIST fetch-group name CDATA #REQUIRED>
> @@ -187,6 +203,8 @@
>  <!ATTLIST query name CDATA #IMPLIED>
>  <!ATTLIST query language CDATA #IMPLIED>
>  <!ATTLIST query unmodifiable (true|false) 'false'>
> +<!ATTLIST query unique (true|false) 'false'>
> +<!ATTLIST query result-class CDATA #IMPLIED>
>  
>  <!ELEMENT unique (extension*, (column|field|property)*, extension*)>
>  <!ATTLIST unique name CDATA #IMPLIED>
> Index: src/dtd/javax/jdo/orm.dtd
> ===================================================================
> --- src/dtd/javax/jdo/orm.dtd	(revision 233330)
> +++ src/dtd/javax/jdo/orm.dtd	(working copy)
> @@ -1,26 +1,38 @@
> -<!-- The following document headers belong in the user's .orm file
>  <?xml version="1.0" encoding="UTF-8"?>
> +<!-- The DOCTYPE should be as follows for metadata documents.
>  <!DOCTYPE orm
>      PUBLIC "-//Sun Microsystems, Inc.//DTD Java Data Objects Mapping Metadata 2.0//EN"
>      "http://java.sun.com/dtd/orm_2_0.dtd">
>  -->
>  <!ELEMENT orm (extension*, (package|query)+, extension*)>
> +<!ATTLIST orm catalog CDATA #IMPLIED>
> +<!ATTLIST orm schema CDATA #IMPLIED>
>  <!ELEMENT package (extension*, (interface|class|sequence)+, extension*)>
>  <!ATTLIST package name CDATA ''>
> +<!ATTLIST package catalog CDATA #IMPLIED>
> +<!ATTLIST package schema CDATA #IMPLIED>
>  
> -<!ELEMENT interface (extension*, datastore-identity?, inheritance?, version?, join*, foreign-key*, index*, unique*, property*, query*, extension*)>
> +<!ELEMENT interface (extension*, datastore-identity?, primary-key?, inheritance?, version?, join*, foreign-key*, index*, unique*, property*, query*, extension*)>
>  <!ATTLIST interface name CDATA #REQUIRED>
>  <!ATTLIST interface table #CDATA #IMPLIED>
> +<!ATTLIST interface catalog CDATA #IMPLIED>
> +<!ATTLIST interface schema CDATA #IMPLIED>
>  
> -<!ELEMENT property (join?, element?, key?, value?, order?, column)? , extension*)>
> +<!ELEMENT property (extension*, (join?, element?, key?, value?, order?, column)? , extension*)>
>  <!ATTLIST property name CDATA #REQUIRED>
>  <!ATTLIST property column CDATA #IMPLIED>
>  
> -<!ELEMENT class (extension*, datastore-identity?, inheritance?, version?, join*, foreign-key*, index*, unique*, field*, query*, extension*)>
> +<!ELEMENT class (extension*, datastore-identity?, primary-key?, inheritance?, version?, join*, foreign-key*, index*, unique*, column*, field*, query*, extension*)>
>  <!ATTLIST class name CDATA #REQUIRED>
>  <!ATTLIST class table CDATA #IMPLIED>
> +<!ATTLIST class catalog CDATA #IMPLIED>
> +<!ATTLIST class schema CDATA #IMPLIED>
>  
> -<!ELEMENT join (extension*, column*, foreign-key?, index?, unique?, extension*)>
> +<!ELEMENT primary-key (extension*, column*, extension*)>
> +<!ATTLIST primary-key name CDATA #IMPLIED>
> +<!ATTLIST primary-key column CDATA #IMPLIED>
> +
> +<!ELEMENT join (extension*, primary-key?, column*, foreign-key?, index?, unique?, extension*)>
>  <!ATTLIST join table CDATA #IMPLIED>
>  <!ATTLIST join column CDATA #IMPLIED>
>  <!ATTLIST join outer (true|false) 'false'>
> @@ -60,6 +72,7 @@
>  <!ATTLIST column scale CDATA #IMPLIED>
>  <!ATTLIST column allows-null CDATA #IMPLIED>
>  <!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>
> @@ -81,7 +94,6 @@
>  <!ATTLIST field delete-action (restrict|cascade|null|default|none) #IMPLIED>
>  <!ATTLIST field indexed (true|false|unique) #IMPLIED>
>  <!ATTLIST field unique (true|false) #IMPLIED>
> -<!ATTLIST field foreign-key CDATA #IMPLIED>
>  <!ATTLIST field mapped-by CDATA #IMPLIED>
>  <!ATTLIST field value-strategy CDATA #IMPLIED>
>  <!ATTLIST field sequence CDATA #IMPLIED>
> @@ -97,23 +109,22 @@
>  <!ELEMENT key (column*, index?, embedded?, foreign-key?, extension*)>
>  <!ATTLIST key column CDATA #IMPLIED>
>  <!ATTLIST key table CDATA #IMPLIED>
> -<!ATTLIST key serialized (true|false) #IMPLIED>
>  <!ATTLIST key delete-action (restrict|cascade|null|default|none) #IMPLIED>
>  <!ATTLIST key indexed (true|false|unique) #IMPLIED>
>  <!ATTLIST key unique (true|false) #IMPLIED>
> +<!ATTLIST key mapped-by CDATA #IMPLIED>
>  
>  <!ELEMENT value (extension*, embedded?, column*, foreign-key?, index?, unique?, extension*)>
>  <!ATTLIST value column CDATA #IMPLIED>
>  <!ATTLIST value table CDATA #IMPLIED>
> -<!ATTLIST value serialized (true|false) #IMPLIED>
>  <!ATTLIST value delete-action (restrict|cascade|null|default|none) #IMPLIED>
>  <!ATTLIST value indexed (true|false|unique) #IMPLIED>
>  <!ATTLIST value unique (true|false) #IMPLIED>
> +<!ATTLIST value mapped-by CDATA #IMPLIED>
>  
>  <!ELEMENT element (extension*, embedded?, column*, foreign-key?, index?, unique?, extension*)>
>  <!ATTLIST element column CDATA #IMPLIED>
>  <!ATTLIST element table CDATA #IMPLIED>
> -<!ATTLIST element serialized (true|false) #IMPLIED>
>  <!ATTLIST element delete-action (restrict|cascade|null|default|none) #IMPLIED>
>  <!ATTLIST element indexed (true|false|unique) #IMPLIED>
>  <!ATTLIST element unique (true|false) #IMPLIED>
> @@ -121,6 +132,7 @@
>  <!ELEMENT order (extension*, column*, index?, extension*)>
>  <!ATTLIST order column CDATA #IMPLIED>
>  <!ATTLIST order indexed (true|false|unique) #IMPLIED>
> +<!ATTLIST order mapped-by CDATA #IMPLIED>
>  
>  <!ELEMENT embedded (extension*, field*, extension*)>
>  <!ATTLIST embedded null-indicator-column CDATA #IMPLIED>
> @@ -147,9 +159,10 @@
>  <!ATTLIST query name CDATA #IMPLIED>
>  <!ATTLIST query language CDATA #IMPLIED>
>  <!ATTLIST query unmodifiable (true|false) 'false'>
> +<!ATTLIST query unique (true|false) 'false'>
> +<!ATTLIST query result-class CDATA #IMPLIED>
>  
>  <!ELEMENT extension ANY>
>  <!ATTLIST extension vendor-name CDATA #REQUIRED>
>  <!ATTLIST extension key CDATA #IMPLIED>
>  <!ATTLIST extension value CDATA #IMPLIED>
> -
> Index: src/dtd/javax/jdo/jdo.xsd
> ===================================================================
> --- src/dtd/javax/jdo/jdo.xsd	(revision 233330)
> +++ src/dtd/javax/jdo/jdo.xsd	(working copy)
> @@ -10,7 +10,12 @@
>                  </xs:choice>
>                  <xs:element minOccurs="0" maxOccurs="unbounded" ref="extension"/>
>              </xs:sequence>
> +            <xs:attributeGroup ref="attlist.jdo"/>
>          </xs:complexType>
> +    <xs:attributeGroup name="attlist.jdo">
> +        <xs:attribute name="catalog"/>
> +        <xs:attribute name="schema"/>
> +    </xs:attributeGroup>
>      </xs:element>
>      <xs:element name="package">
>          <xs:complexType>
> @@ -28,12 +33,15 @@
>      </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:sequence>
>                  <xs:element minOccurs="0" maxOccurs="unbounded" ref="extension"/>
>                  <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"/>
> @@ -77,6 +85,8 @@
>                  </xs:restriction>
>              </xs:simpleType>
>          </xs:attribute>
> +        <xs:attribute name="catalog"/>
> +        <xs:attribute name="schema"/>
>      </xs:attributeGroup>
>      <xs:element name="property">
>          <xs:complexType>
> @@ -197,6 +207,7 @@
>                  <xs:element minOccurs="0" maxOccurs="unbounded" ref="extension"/>
>                  <xs:element minOccurs="0" maxOccurs="unbounded" ref="implements"/>
>                  <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"/>
> @@ -258,11 +269,28 @@
>                  </xs:restriction>
>              </xs:simpleType>
>          </xs:attribute>
> +        <xs:attribute name="catalog"/>
> +        <xs:attribute name="schema"/>
>      </xs:attributeGroup>
> +    <xs:element name="primary-key">
> +        <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.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:sequence>
>                  <xs:element minOccurs="0" maxOccurs="unbounded" ref="extension"/>
> +                <xs:element minOccurs="0" ref="primary-key"/>
>                  <xs:element minOccurs="0" maxOccurs="unbounded" ref="column"/>
>                  <xs:element minOccurs="0" ref="foreign-key"/>
>                  <xs:element minOccurs="0" ref="index"/>
> @@ -421,6 +449,7 @@
>          <xs:attribute name="scale"/>
>          <xs:attribute name="allows-null"/>
>          <xs:attribute name="default-value"/>
> +        <xs:attribute name="insert-value"/>
>      </xs:attributeGroup>
>      <xs:element name="field">
>          <xs:complexType>
> @@ -438,7 +467,6 @@
>                  <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"/>
> @@ -623,6 +651,14 @@
>                  </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>
> @@ -650,6 +686,14 @@
>                  </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>
> @@ -667,6 +711,14 @@
>                  </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>
> @@ -685,14 +737,6 @@
>      <xs:attributeGroup name="attlist.key">
>          <xs:attribute name="column"/>
>          <xs:attribute name="table"/>
> -        <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="delete-action">
>              <xs:simpleType>
>                  <xs:restriction base="xs:token">
> @@ -721,6 +765,7 @@
>                  </xs:restriction>
>              </xs:simpleType>
>          </xs:attribute>
> +        <xs:attribute name="mapped-by"/>
>      </xs:attributeGroup>
>      <xs:element name="value">
>          <xs:complexType>
> @@ -737,14 +782,6 @@
>          </xs:complexType>
>      </xs:element>
>      <xs:attributeGroup name="attlist.value">
> -        <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="table"/>
>          <xs:attribute name="column"/>
>          <xs:attribute name="delete-action">
> @@ -775,6 +812,7 @@
>                  </xs:restriction>
>              </xs:simpleType>
>          </xs:attribute>
> +        <xs:attribute name="mapped-by"/>
>      </xs:attributeGroup>
>      <xs:element name="array">
>          <xs:complexType>
> @@ -801,6 +839,14 @@
>                  </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>
> @@ -819,14 +865,6 @@
>      <xs:attributeGroup name="attlist.element">
>          <xs:attribute name="column"/>
>          <xs:attribute name="table"/>
> -        <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="delete-action">
>              <xs:simpleType>
>                  <xs:restriction base="xs:token">
> @@ -856,6 +894,7 @@
>                  </xs:restriction>
>              </xs:simpleType>
>          </xs:attribute>
> +        <xs:attribute name="mapped-by"/>
>      </xs:attributeGroup>
>      <xs:element name="order">
>          <xs:complexType>
> @@ -982,6 +1021,15 @@
>                  </xs:restriction>
>              </xs:simpleType>
>          </xs:attribute>
> +        <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:attribute name="result-class"/>
>      </xs:attributeGroup>
>      <xs:element name="unique">
>          <xs:complexType>


-- 
-------------------------------------------------------------------
Michael Watzek                  Tech@Spree Engineering GmbH
mailto:mwa.tech@spree.de        Buelowstr. 66
Tel.:  ++49/30/235 520 36       10783 Berlin - Germany
Fax.:  ++49/30/217 520 12       http://www.spree.de/
-------------------------------------------------------------------