La tercera etapa de un método para crear modelos de datos mediante DFDL
implica la organización del modelo DFDL de modo que los valores de propiedades DFDL
comunes se declaren en un único lugar y actúen como valores predeterminados para
todos los componentes del esquema.
Todos los esquemas DFDL creados mediante los asistentes e
importadores de IBM DFDL siguen los métodos descritos aquí.
- Configure los valores predeterminados de las propiedades DFDL comunes mediante una anotación dfdl:format en el nivel superior del esquema.
Un esquema DFDL se puede configurar de modo que las propiedades DFDL que son
comunes a varios componentes de esquema deban declararse sólo una vez,
utilizando una anotación dfdl:format en el nivel superior del propio esquema para
declarar propiedades. De hecho, estas propiedades actúan como valores predeterminados para todos los componentes del esquema. (DFDL
no tiene valores predeterminados incorporados.)
- Una mejora adicional es la colocación de estas propiedades en un esquema DFDL
aparte para reutilizar en otros esquemas DFDL relacionados.
Puede crear un esquema DFDL aparte para contener estas propiedades DFDL
comunes y colocarlas dentro de una anotación dfdl:defineFormat. A continuación, este
esquema se incluye en el esquema DFDL principal mediante una inclusión o
importación XSD. La anotación dfdl:format en el nivel superior del esquema principal
utiliza dfdl:ref en su lugar para hacer referencia a dfdl:defineFormat. De forma
similar a una expansión de macro, las propiedades se extraen de dfdl:defineFormat a
dfdl:format, donde actúan como valores predeterminados para todos los componentes
del esquema del modo que se describe previamente. De este modo, las propiedades DFDL
comunes se pueden compartir entre varios esquemas DFDL relacionados.
Figura 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>
- Ahora, sólo necesita establecer unas pocas propiedades directamente en cada objeto para completar la configuración.
-
Figura 2. employees.xsd<xs:schema>
<xs:include schemaLocation="defaults.xsd" />
<xs:annotation>
<xs:appinfo source="http://www.ogf.org/dfdl/" >
<!- Aplicar valores de propiedades DFDL comunes como valores predeterminados -->
<dfdl:format ref="myDefaults" />
</xs:appinfo>
</xs:annotation>
<!- Añadir sólo las propiedades DFDL que difieren de los valores predeterminados -->
<xs:element name="employeeRecord" maxOccurs="unbounded" dfdl:lengthKind="implicit"
dfdl:initiator="{{" dfdl:terminator="}%CR;%LF;" >
<xs:complexType>
...
</xs:complexType>
</xs:element>
...
</xs:schema>