Die dritte Phase der Datenmodellierungsmethode mittels DFDL beinhaltet die Strukturierung des DFDL-Modells, so dass allgemeine DFDL-Eigenschaftswerte an einem zentralen Ort deklariert werden und von dort aus als Standardwerte für alle Komponenten des Schemas herangezogen werden.
Alle DFDL-Schemas, die mit den DFDL-Assistenten und -Importprogrammen von IBM erstellt werden, entsprechen den hier beschriebenen Verfahren.
- Richten Sie in der Ausgangsebene des Schemas mithilfe einer dfdl:format-Anmerkung die Standardwerte für allgemeine DFDL-Eigenschaften ein.
Sie können ein DFDL-Schema so einrichten,
dass DFDL-Eigenschaften, die für mehrere Schemakomponenten gelten, nur einmal deklariert werden müssen. Dazu deklarieren Sie die Eigenschaften in der
Ausgangsebene des Schemas mithilfe einer dfdl:format-Anmerkung. Diese Eigenschaften
gelten dann als Standardwerte für alle Komponenten des Schemas. (DFDL hat keine
vordefinierten Standardwerte.)
- Noch effizienter wäre es, diese Eigenschaften in einem eigenen DFDL-Schema zu definieren, so dass sie für ähnliche DFDL-Schemas übernommen werden können.
Erstellen Sie ein eigenes DFDL-Schema für diese allgemeinen DFDL-Eigenschaften
und fügen Sie die Eigenschaften in eine dfdl:defineFormat-Anmerkung ein. Dieses
Schema wird dann mittels eines XSD Include oder Import in das DFDL-Hauptschema
eingeschlossen. Die dfdl:format-Anmerkung in der obersten Ebene des Hauptschemas
verwendet hingegen dfdl:ref, um dfdl:defineFormat zu referenzieren. Ähnlich wie
bei einer Makroerweitertung werden die Eigenschaften aus dfdl:defineFormat in
dfdl:format übertragen, wo sie wie oben beschrieben als Standardwerte für alle
Komponenten des Schemas dienen. Auf diese Weise lassen sich allgemeine DFDL-
Eigenschaften sehr gut für mehrere ähnliche DFDL-Schemas verwenden.
Abbildung 1. defaults.xsd<xs:schema>
<xs:annotation>
<xs:appinfo source="http://www.ogf.org/dfdl/" >
<dfdl:defineFormat name="myDefaults" >
<!- Declare common DFDL property values -->
<dfdl:format encoding="ASCII" representation="text" ... />
</dfdl:defineFormat>
</xs:appinfo>
</xs:annotation>
</xs:schema>
- Zur Beendigung der Konfiguration brauchen Sie nun nur noch einige Eigenschaften direkt für jedes Objekt einzustellen.
-
Abbildung 2. employees.xsd<xs:schema>
<xs:include schemaLocation="defaults.xsd" />
<xs:annotation>
<xs:appinfo source="http://www.ogf.org/dfdl/" >
<!- Apply common DFDL property values as defaults -->
<dfdl:format ref="myDefaults" />
</xs:appinfo>
</xs:annotation>
<!- Add only DFDL properties that differ from the defaults -->
<xs:element name="employeeRecord" maxOccurs="unbounded" dfdl:lengthKind="implicit"
dfdl:initiator="{{" dfdl:terminator="}%CR;%LF;" >
<xs:complexType>
...
</xs:complexType>
</xs:element>
...
</xs:schema>