O terceiro estágio de uma abordagem de modelagem de dados usando DFDL envolve organizar o modelo DFDL para que os valores da propriedade DFDL comuns sejam declarados em um único local e atuem como padrões para todos os componentes no esquema.
Todos os esquemas DFDL criados pelos assistentes e importadores de DFDL da IBM seguem as práticas como estão descritas aqui.
- Configure padrões de propriedade DFDL comuns usando uma anotação dfdl:format no nível superior do esquema.
Um esquema DFDL pode ser configurado de modo que as propriedades DFDL que são comuns a diversos componentes de esquema precisem ser declaradas somente uma vez usando uma anotação dfdl:format no nível superior do próprio esquema para declarar propriedades. Essas propriedades atuam efetivamente como padrões para todos os componentes no esquema. (DFDL não possui padrões de propriedade integrados.)
- Um refinamento maior é colocar essas propriedades em um esquema DFDL separado para reutilização em outros esquemas DFDL relacionados.
Crie um esquema DFDL separado para conter essas propriedades DFDL comuns e coloque-as em uma anotação dfdl:defineFormat. Esse esquema é então incluído no esquema DFDL principal através de uma inclusão ou importação de XSD. A anotação dfdl:format no nível superior do esquema principal utiliza dfdl:ref para se referir a dfdl:defineFormat. Assim como uma expansão de macro, as propriedades são extraídas de dfdl:defineFormat em dfdl:format, onde então atuam como padrões para todos os componentes no esquema da maneira descrita acima. Dessa forma, propriedades DFDL comunspodem ser compartilhadas entre vários 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>
- Agora, você precisa apenas configurar algumas propriedades diretamente em cada objeto para concluir a configuração.
-
Figura 2. employees.xsd<xs:schema>
<xs:include schemaLocation="defaults.xsd" />
<xs:annotation>
<xs:appinfo source="http://www.ogf.org/dfdl/" >
<!- Aplicar valores da propriedade DFDL comum como padrão -->
<dfdl:format ref="myDefaults" />
</xs:appinfo>
</xs:annotation>
<!- Incluir somente propriedades DFDL que sejam diferentes dos padrões -->
<xs:element name="employeeRecord" maxOccurs="unbounded" dfdl:lengthKind="implicit"
dfdl:initiator="{{" dfdl:terminator="}%CR;%LF;" >
<xs:complexType>
...
</xs:complexType>
</xs:element>
...
</xs:schema>