Convertisseur XML Pivot - Structure du XML de données

De MappingDoc

Explications de la structure du XML de données

Elément racine <data>

Elément racine du fichier XML, obligatoire.
L'élément <data> contient un ou plusieurs éléments <doc>
Il peut aussi contenir des éléments <field>, comportant des informations générales communes à tous les documents du flux XML.

Elément <doc>

Elément correspondant à une occurence de document.
Un document correspond par exemple à une facture (mono ou multi pages) , un BL (mono ou multi pages) ou tout autre type de document…

L'attribut @type est obligatoire et permet de spécifier quel type de traitement doit être appliqué sur les données (facture, bl etc…). Utile dans le cas où le flux peut contenir plusieurs documents différents.

Un élément <doc> contient des éléments <field> et/ou des éléments <list>

Exemple :

 <data>
  <doc type="BL">
     ...
   </doc>
   <doc type="BL">
     <...>
   </doc>
 </data>

Elément <field>

Elément contenant une donnée unitaire. Ils correspondent simplement à des champs et se retrouvent à plusieurs niveaux du XML. Exemple : nom, prénom, code article, téléphone,J montant, libellé etc… L'attribut @id permet d'identifier la donnée.
Deux éléments <field> « frères » ne peuvent pas avoir le même attribut @id.
Le séparateur décimal des valeurs numériques doit être le point (standard XML) et les séparateur de milliers sont prohibés.

Elément <list>

Elément permettant de fournir des données pour lesquelles il existe plusieurs occurrences d'un élément. Par exemple les lignes d'une facture, les détails d'un produit etc…
Un élément <list> contient exclusivement des éléments <item>. L'attribut @id est obligatoire et permet d'identifier la liste.

Elément <item>

Un élément <item> correspond à une occurrence des enfants d’un élément <list>. Il s'agit par exemple d'une ligne de facture ou un détail produit.
Il s'agit de l'équivalent d'une « ligne » ou d'un « enregistrement » dans une table SQL. En d'autres termes, il s'agit d'un élément d'une liste.


Exemple de XML Pivot

Exemple théorique

 <?xml version="1.0" encoding="UTF-8"?>
 <data version="1.0" xmlns="http://mappingsuite.com/designer">
   <field id="NOM_CHAMP">VALEUR</field>
   (...)
   <doc type="TYPE_DOCUMENT">
     <field id="NOM_CHAMP">VALEUR</field>
     (...)
     <list id="NOM_LISTE">
       <item>
         <field id="NOM_CHAMP">VALEUR</field>
         (...)
         <list id="NOM_LISTE_DE_NIVEAU_2">
           <item>
             <field id="NOM_CHAMP">VALEUR</field>
             (...)
           </item>
           <list id="NOM_LISTE_DE_NIVEAU_3">
             <item>
               <field id="NOM_CHAMP">VALEUR</field>
               (...)
             </item>
           </list>
         </list>
         (...)
       </item>
       (...)
     </list>
     (...)
   </doc>
   (...)
 </data>

Exemple réel

 <data version="1.0" xmlns="http://mappingsuite.com/designer">
   <field id="INFO_OGM">Cet aliment n’utilise aucune des matières (…) moins de 0,9% d’OGM</field>
   <field id="INFO_SOC">Ilecoop</field>
   <doc type="BL">
     <field id="COD_TIE_EXT">293847</field>
     <field id="IDT_BLV_ENT">9482</field>
     <field id="ADR_FAC_LG1">ALIAGRO-RECETTE</field>
     <field id="ADR_FAC_LG2">42 route de la grasse aux chèvres</field>
     <field id="ADR_FAC_CP">71310</field>
     <field id="ADR_FAC_VIL">RAMPOUX</field>
     <list id="PRODUITS">
       <item>
         <field id="COD_PRD">CFA0253</field>
         <field id="LIB_PRD">FEC CHEVRYPACK</field>
         <list id="CERTIFICAT">
           <item>
             <field id="LIBELLE">T. feed d’extraction</field>
           </item>
         </list>
         <list id="NUTRIMENTS">
           <item>
             <field id="VALUE">Protéine : 27,0%</field>
           </item>
           <item>
             <field id="VALUE">Sodium : 0,29%</field>
           </item>
         </list>
       </item>
       <item>
         <field id="COD_PRD">CFA3928</field>
         <field id="LIB_PRD">BLE ARDOISE</field>
         <list id="CERTIFICAT">
           <item>
             <field id="VALUE">T. feed pets</field>
           </item>
         </list>
         <list id="NUTRIMENTS">
           <item>
             <field id="VALUE">Protéine : 19,0%</field>
           </item>
           <item>
             <field id="TXT">Lipides : 3,27%</field>
           </item>
         </list>
       </item>
     </list>
   </doc>
 </data>

Description XSD

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://mappingsuite.com/designer" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="field">
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="xs:string">
          <xs:attribute type="xs:string" name="id"/>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="item">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="des:field" maxOccurs="unbounded" minOccurs="0" xmlns:des="http://mappingsuite.com/designer"/>
        <xs:element ref="des:list" minOccurs="0" xmlns:des="http://mappingsuite.com/designer"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="list">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="des:item" xmlns:des="http://mappingsuite.com/designer"/>
      </xs:sequence>
      <xs:attribute type="xs:string" name="id"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="doc">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="des:field" maxOccurs="unbounded" minOccurs="0" xmlns:des="http://mappingsuite.com/designer"/>
        <xs:element ref="des:list" xmlns:des="http://mappingsuite.com/designer"/>
      </xs:sequence>
      <xs:attribute type="xs:string" name="type" use="optional"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="data">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="des:field" maxOccurs="unbounded" minOccurs="0" xmlns:des="http://mappingsuite.com/designer"/>
        <xs:element ref="des:doc" maxOccurs="unbounded" minOccurs="0" xmlns:des="http://mappingsuite.com/designer"/>
      </xs:sequence>
      <xs:attribute type="xs:float" name="version" use="optional"/>
    </xs:complexType>
  </xs:element>
</xs:schema>