blob: 3cc0de2bf42055c5e6b4a6f1c56c018bcb6db27b [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8" ?>
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<!-- ===================================================
Cayenne DataMap DTD, v 1.1
Defines format of Cayenne DataMap XML files (*.map.xml). DataMap files contain
the metadata needed for Cayenne object-relational features. Multiple DataMaps
are usually combined in one shared namespace, so the elements of the DataMap
may reference objects from other DataMaps.
-->
<!-- ===================================================
A generic property used by other configuration objects.
-->
<!ELEMENT property EMPTY>
<!ATTLIST property
name CDATA #REQUIRED
value CDATA #REQUIRED
>
<!-- ===================================================
Root element.
-->
<!ELEMENT data-map (property*, db-entity*, obj-entity*, db-relationship*, obj-relationship*, procedure*, query*)>
<!ATTLIST data-map
project-version CDATA #REQUIRED
>
<!-- ===================================================
A descriptor of a DB table or view.
-->
<!ELEMENT db-entity (db-attribute+, db-attribute-derived+, db-key-generator?)>
<!ATTLIST db-entity
name CDATA #REQUIRED
schema CDATA #IMPLIED
catalog CDATA #IMPLIED
parentName CDATA #IMPLIED
>
<!-- ===================================================
A descriptor of a DB table column.
-->
<!ELEMENT db-attribute EMPTY>
<!ATTLIST db-attribute
name CDATA #REQUIRED
isPrimaryKey (true | false) "false"
isMandatory (true | false) "false"
isGenerated (true|false) "false"
type CDATA #REQUIRED
length CDATA #IMPLIED
precision CDATA #IMPLIED
>
<!-- ===================================================
A descriptor of a column of a "dynamic view" defined via a derived DbEntity.
-->
<!ELEMENT db-attribute-derived (db-attribute-ref*)>
<!ATTLIST db-attribute-derived
name CDATA #REQUIRED
isPrimaryKey (true | false) "false"
isMandatory (true | false) "false"
type CDATA #REQUIRED
length CDATA #IMPLIED
precision CDATA #IMPLIED
isGroupBy (true | false) "false"
spec CDATA #IMPLIED
>
<!ELEMENT db-attribute-ref EMPTY>
<!ATTLIST db-attribute
name CDATA #REQUIRED
>
<!-- ===================================================
Defines an ObjEntity - a metadata element describing a persistent Java
class. Since 1.1 allows "superEntityName" to specify a parent in the inheritance
hierarchy.
-->
<!ELEMENT obj-entity (qualifier?, obj-attribute+)>
<!ATTLIST obj-entity
name CDATA #REQUIRED
className CDATA #REQUIRED
dbEntityName CDATA #REQUIRED
superEntityName CDATA #IMPLIED
superClassName CDATA #IMPLIED
clientClassName CDATA #IMPLIED
clientSuperClassName CDATA #IMPLIED
readOnly (true | false) "false"
lock-type (optimistic | none) "none"
>
<!ELEMENT obj-attribute EMPTY>
<!ATTLIST obj-attribute
name CDATA #REQUIRED
db-attribute-path CDATA #REQUIRED
type CDATA #REQUIRED
lock (true | false) "false"
>
<!ELEMENT obj-relationship EMPTY>
<!ATTLIST obj-relationship
name CDATA #REQUIRED
source CDATA #REQUIRED
target CDATA #REQUIRED
toMany (true | false) "false"
lock (true | false) "false"
db-relationship-path CDATA #IMPLIED
>
<!ELEMENT db-relationship (db-attribute-pair+)>
<!ATTLIST db-relationship
source CDATA #REQUIRED
target CDATA #REQUIRED
toMany (true | false) "false"
toDependentPK (true | false) "false"
name CDATA #REQUIRED
>
<!ELEMENT db-attribute-pair EMPTY>
<!ATTLIST db-attribute-pair
source CDATA #REQUIRED
target CDATA #REQUIRED
>
<!ELEMENT procedure (procedure-parameter*)>
<!ATTLIST procedure
name CDATA #REQUIRED
schema CDATA #IMPLIED
catalog CDATA #IMPLIED
returningValue (true | false) "false"
>
<!ELEMENT procedure-parameter EMPTY>
<!ATTLIST procedure-parameter
name CDATA #REQUIRED
direction (in | in_out | out | void) "void"
type CDATA #REQUIRED
length CDATA #IMPLIED
precision CDATA #IMPLIED
>
<!-- ===================================================
Defines a Cayenne Query that can be either at the DataMap
level, or linked to an entity or procedure.
-->
<!ELEMENT query (property*, result-column*, (sql* | (qualifier?, ordering*, prefetch*)?) >
<!ATTLIST query
name CDATA #REQUIRED
factory CDATA #REQUIRED
root (db-entity | obj-entity | procedure | data-map | java-class) "data-map"
root-name CDATA #IMPLIED
result-class CDATA #IMPLIED
selecting (true | false) "true"
>
<!-- ===================================================
Defines a query ResultSet column. This can be viewed as
a stripped down combination of ObjAttribute and DbAttribute.
-->
<!ELEMENT result-column>
<!ATTLIST result-column
label CDATA #IMPLIED
db-type CDATA #REQUIRED
java-type CDATA #REQUIRED
>
<!-- ===================================================
Defines a query qualifier, normally an encoded expression
wrapped in CDATA, like "abc.name != $param2 and salary >
$param2".
-->
<!ELEMENT qualifier (#PCDATA)>
<!-- ===================================================
Defines a query ordering.
-->
<!ELEMENT ordering (#PCDATA)>
<!ATTLIST ordering
descending (true | false) "false"
ignore-case (true | false) "false"
>
<!-- ===================================================
Defines a query relationship prefetching.
-->
<!ELEMENT prefetch (#PCDATA)>
<!-- ===================================================
Defines arbitrary SQL statement, normally wrapped in
CDATA section. Note that SQL statement can be customized
for different SQL dialects per DbAdapter class. If no
adapter-specific statement is found, the one with no
adapter label is used by default
-->
<!ELEMENT sql (#PCDATA)>
<!ATTLIST sql
adapter-class CDATA #IMPLIED
>
<!-- ===================================================
"db-key-generator" optional tag is used to install the
Automatic Sequence/Key Generation facility for db-entity.
Example:
<db-key-generator>
<db-generator-type>ORACLE</db-generator-type>
<db-generator-name>test_sequence</db-generator-name>
<db-key-cache-size>10</db-key-cache-size>
</db-key-generator>
Notes: This feature is intended for use with Simple (non-Compound)
Integral Primary Keys.
-->
<!ELEMENT db-key-generator (
db-generator-type,
db-generator-name?,
db-key-cache-size?
)>
<!-- ===================================================
Specifies the Key Generation Method that will be employed
'ORACLE' - use Oracle's SEQUENCE
'NAMED_SEQUENCE_TABLE' - use USER designated SEQUENCE TABLE
User specifies the name of a DBMS Table
with the schema (sequence INT)
which will be used to hold sequence values
(not supported yet)
-->
<!ELEMENT db-generator-type (#PCDATA)>
<!-- ===================================================
If this is DBMS Key Generation,
Then this may be used to specify the Name of the Generator,
e.g. for <db-generator-type>ORACLE
<db-generator-name> would be the name of the ORACLE SEQUENCE to use.
the SEQUENCE is assumed to already exist in the Database.
If this is <db-generator-type>NAMED_SEQUENCE_TABLE Key Generation,
Then this would be used to specify the name of the SEQUENCE TABLE to use.
the NAMED_SEQUENCE_TABLE is assumed to already exist in the Database
with 1 row.
-->
<!ELEMENT db-generator-name (#PCDATA)>
<!-- ===================================================
Optional size of key cache.
For <db-generator-type>ORACLE , this value MUST match the
Oracle SEQUENCE INCREMENT value. If there is a mismatch
between this value and the Oracle SEQUENCE INCREMENT value,
then there will likely be duplicate key problems.
For <db-generator-type>NAMED_SEQUENCE_TABLE , this tells how many keys
the Container will fetch in a single DBMS call
-->
<!ELEMENT db-key-cache-size (#PCDATA)>