Object Definition of Table Join
Table joins can be emulated by model objects with a special object definition. This Object Definition for Table Joins reuses the Object Definitions of simple model objects by referencing them. The Document Type Definition (DTD) of such an Object Definition XML looks as follows:
<!ELEMENT joinedObjectDef (columnDefs+, joinDef+)>
<!ATTLIST joinedObjectDef
objectName CDATA #REQUIRED
parent CDATA #REQUIRED
version CDATA #REQUIRED
>
<!ELEMENT columnDefs (columnDef+, hidden+)>
<!ELEMENT columnDef EMPTY>
<!ATTLIST columnDef
columnName CDATA #REQUIRED
alias CDATA #IMPLIED
as CDATA #IMPLIED
domainObject CDATA #IMPLIED
nestedObject CDATA #IMPLIED
valueType (Number | String | Timestamp) #IMPLIED
modifier (COUNT | AVG | MIN | MAX | SUM | VARIANCE | STDDEV) #IMPLIED
template CDATA #IMPLIED
>
<!ELEMENT hidden EMPTY>
<!ATTLIST hidden
columnName CDATA #REQUIRED
domainObject CDATA #REQUIRED
>
<!ELEMENT joinDef (objectDesc+, objectNested*, joinCondition+, joinDef*,
objectPlaceholder*)>
<!ATTLIST joinDef
joinType (EQUI_JOIN | LEFT_JOIN | LEFT_JOIN_OUTER | RIGHT_JOIN |
RIGHT_JOIN_OUTER | NO_JOIN) #REQUIRED
>
<!ELEMENT objectDesc EMPTY>
<!ATTLIST objectDesc
objectClassName CDATA #REQUIRED
>
<!ELEMENT joinCondition (columnDef+)>
<!ELEMENT objectNested (columnDef+, resultGrouping*)>
<!ATTLIST objectNested
name CDATA #REQUIRED
>
<!ELEMENT objectPlaceholder EMPTY>
<!ATTLIST objectPlaceholder
name CDATA #REQUIRED
>
<!ELEMENT resultGrouping (columnDef+)>
<!ATTLIST resultGrouping
modifier (GROUP | ORDER) #REQUIRED
>