Manuel de référence des fichiers au format XML utilisés par les drivers générés par Data Flow Generator V0
|
1 Introduction
Les fichiers XML utilisés par les driver générés par Data Flow Generator ont une structure gramaticale complètement décrite par le modèle (voir modèle des données).
Cependant pour des questions de contrôle, il existent certaines spécificités liés au support XML et la nature de certaines données (exemple polymorphisme).
2 La racine du des données
Le driver a besoin de certaines informations pour gérer ne serait-ce que la gestion des versions. Ces informations sont stockées dans la racine du document :
- fileformatversion
- cardinalité : 1
- contient la version de la grammaire décrite par le contenu décrit dans le fichier XML. Sa valeur dépend du contenu.
- DriverName
- cardinalité : ?
- est le nom du driver, ce nom est généré par DataFlowGenerator, il est écrit en dur dans le code généré. Par exemple s'il contient "DataFlowGenerator_XERCES_XML", c'est que ce fichier à été généré par du code écrit en c++ utilisant la librairie XERCES.
- DriverVersion
- cardinalité : ?
- est la version du driver qui a généré le fichier. Ces numéros sont générés par DataFlowGenerator, ils sont écrits en dur dans le code généré.
3 Polymorphisme
Dans le cas de polymorphisme, le type de classe doit être stocké dans le fichier. L'attribut dfg_classname sert pour stocker cette information.
- dfg_classname
- cardinalité : ?
- contient le type de la classe ou structure.
4 Exemple
4.1 Un modèle
<?xml version="1.0" encoding="ISO-8859-1"?>
<grammar type="xml" version="1.0.0" fileformatversion="1.0.0">
<el name="dessin" type='CDessin' >
<el name="base" type="CBase" OnlyDefinition="1"/>
<el type="CPoint" name="point" heritances="CBase" OnlyDefinition="1">
<el name="x" type="float"/>
<el name="y" type="float"/>
</el>
<el type="CSegment" name="segment" heritances="CBase" OnlyDefinition="1">
<el name="A" type="@CPoint"/>
<el name="B" type="@CPoint"/>
</el>
<el type="CCercle" name="cercle" heritances="CBase" OnlyDefinition="1">
<el name="C" type="@CPoint"/>
<el name="R" type="float"/>
</el>
<el type="CCompound" name="compound" heritances="CBase" cardinality="*">
<el name="elements" type="@CBase" cardinality="*" accept="CPoint:CSegment:CCercle:CCompound"/>
</el>
</el>
</grammar>
4.2 Un exemple de fichier correspondant au modèle
<dessin DriverName="DataFlowGenerator_XERCES_XML" DriverVersion="0.21.0" FileFormatVersion="1.0.0">
<compound>
<elements dfg_classname="CCercle">
<C>
<x>3.000000E+00</x>
<y>0.000000E+00</y>
</C>
<R>4.000000E+01</R>
</elements>
<elements dfg_classname="CSegment">
<A>
<x>5.000000E+00</x>
<y>6.000000E+00</y>
</A>
<B>
<x>1.000000E+00</x>
<y>-2.000000E+00</y>
</B>
</elements>
<elements dfg_classname="CCompound">
<elements dfg_classname="CCercle">
<C>
<x>7.000000E+00</x>
<y>0.000000E+00</y>
</C>
<R>3.000000E+01</R>
</elements>
<elements dfg_classname="CCompound">
<elements dfg_classname="CCercle">
<C>
<x>1.400000E+01</x>
<y>1.000000E+01</y>
</C>
<R>2.000000E+01</R>
</elements>
</elements>
</elements>
</compound>
<compound>
<elements dfg_classname="CCercle">
<C>
<x>4.000000E+00</x>
<y>0.000000E+00</y>
</C>
<R>2.000000E+01</R>
</elements>
</compound>
</dessin>
