Convertisseur XML Pivot - Structure du XML de paramétrage

Différence entre versions

De MappingDoc
(Page créée avec « ==Structure du XML de paramétrage== De manière générale, ce fichier XML de paramétrage a la même structure que le document à produire, c'est-à-dire qu'en lisant ce... »)
 
(Structure du XML de paramétrage)
Ligne 2 : Ligne 2 :
 
De manière générale, ce fichier XML de paramétrage a la même structure que le document à produire, c'est-à-dire qu'en lisant ce XML, on doit pouvoir reconnaître la manière dont le document sera structuré visuellement de haut en bas.
 
De manière générale, ce fichier XML de paramétrage a la même structure que le document à produire, c'est-à-dire qu'en lisant ce XML, on doit pouvoir reconnaître la manière dont le document sera structuré visuellement de haut en bas.
  
 
+
<syntaxhighlight lang="xml">
 
<?xml version="1.0" encoding="UTF-8"?>
 
<?xml version="1.0" encoding="UTF-8"?>
 
<param version="1.0" data-version="1.0" xmlns="http://mappingsuite.com/designer" decimal-separator="," thousands-separator=" ">
 
<param version="1.0" data-version="1.0" xmlns="http://mappingsuite.com/designer" decimal-separator="," thousands-separator=" ">
Ligne 23 : Ligne 23 :
 
     <!-- Liste -->
 
     <!-- Liste -->
 
     <list id="NOM_LISTE">
 
     <list id="NOM_LISTE">
      <!-- Ligne(s) d'entête appliquée(s) une seule fois pour toute la liste -->
 
      <list-header>
 
        <line name="NOM_LIGNE">
 
          <field id="NOM_CHAMP" list-function="xxxxx"/>
 
          <field id="NOM_CHAMP" list-function="xxxxx"/>
 
        </line>
 
        ...
 
      </list-header>
 
 
       <items>
 
       <items>
 
         <line name="xxxxxxx">
 
         <line name="xxxxxxx">
Ligne 61 : Ligne 53 :
 
       </items>
 
       </items>
 
       (...)
 
       (...)
      <!-- Ligne(s) ajoutées automatiquement entre chaque item -->
 
      <!-- pour intercaler un séparateur par exemple -->
 
      <interitem>
 
        <line name="NOM_LIGNE">
 
          <field id="NOM_CHAMP" />
 
          <field id="NOM_CHAMP" />
 
        </line>
 
        ...
 
      </interitem>
 
      <!-- Ligne(s) de pied appliquée(s) une seule fois pour toute la liste -->
 
      <list-footer>
 
        <line name="NOM_LIGNE">
 
        <field id="NOM_CHAMP" list-function="xxxxx"/>
 
          <field id="NOM_CHAMP" list-function="xxxxx"/>
 
        </line>
 
        ...
 
      </list-footer>
 
 
     </list>
 
     </list>
    <!-- Liste avec regroupement des items -->
 
    <list id="NOM_LIST_2">
 
      <items group-by="key1">
 
        <key name="key1">
 
          <field id="NOM_CHAMP" />
 
        </key>
 
        <!-- Ligne(s) d'entête appliquée(s) à chaque rupture -->
 
        <group-header>
 
          <line name="NOM_LIGNE">
 
            <field id="NOM_CHAMP" grouping-function="xxxxx"/>
 
            <field id="NOM_CHAMP" grouping-function="xxxxx"/>
 
          </line>
 
          ...
 
        </group-header>
 
        <!-- Ligne(s) contenant les données aggrégées -->
 
        <group-aggregate>
 
          <line name="NOM_LIGNE">
 
            <field id="NOM_CHAMP" grouping-function="xxxxx"/>
 
            <field id="NOM_CHAMP" grouping-function="xxxxx"/>
 
          </line>
 
        </group-aggregate>
 
        <!-- Lignes de détail appliquées sur chaque enregistrement (item) trouvé dans la liste -->
 
        <line name="NOM_LIGNE">
 
          <field id="NOM_CHAMP"/>
 
          <field id="NOM_CHAMP"/>
 
          ...
 
        </line>
 
        ...
 
        <!-- Ligne(s) de pied appliquée(s) à chaque rupture -->
 
        <!-- Utile pour les sous totaux, les récapitulatifs etc... -->
 
        <group-footer>
 
          <line name="NOM_LIGNE">
 
            <field name="NOM_CHAMP" grouping-function="xxxxx"/>
 
            <field name="NOM_CHAMP" grouping-function="xxxxx"/>
 
            ...
 
          </line>
 
          ...
 
        </group-footer> 
 
      </items>
 
    </list
 
 
     (...)
 
     (...)
 
   </doc>
 
   </doc>
 
</param>
 
</param>
 +
</syntaxhighlight>
  
 
===Exemple de XML de paramétrage très simple===
 
===Exemple de XML de paramétrage très simple===
Le paramétrage suivant permet de récupérer intégralement les informations du fichier XML de données afin de générer un fichier XML compatible avec le Designer Mapping, sans aucune utilisation de fonctionnalités avancées.
+
Le paramétrage suivant permet de récupérer intégralement les informations du fichier XML de données sur 3 niveaux de listes afin de générer un fichier XML compatible avec le Designer Mapping, sans aucune utilisation de fonctionnalités avancées.
  
 +
<syntaxhighlight lang="xml">
 
<param>
 
<param>
 
   <doc type="BL">
 
   <doc type="BL">
  <field id="*"/>
+
    <field id="*"/>
  <list id="*">
+
    <list id="*">
  <line>
+
      <items>
  <field id="*" />
+
        <line>
  </line>
+
          <field id="*" />
  <list id="*" >
+
        </line>
  <line>
+
        <list id="*" >
  <field id="*" />
+
          <items>
  </line>
+
            <line>
  <list id="*">
+
              <field id="*" />
  <line>
+
            </line>
  <field id="*" />
+
            <list id="*">
  </line>
+
              <items>
  </list>
+
                <line>
  </list>
+
                  <field id="*" />
  </list>
+
                </line>
 +
            </list>
 +
          </items>
 +
        </list>
 +
      </items>
 +
    </list>
 
   </doc>
 
   </doc>
 
</param>
 
</param>
 +
</syntaxhighlight>
  
Mais les exemples suivants, encore plus simples doivent également fonctionner. Ils permettent de récupérer la totalité du fichier XML de données.
+
Mais les exemples suivants, encore plus simples, permettent également de récupérer la totalité du fichier XML de données.
 
 
  
 +
<syntaxhighlight lang="xml">
 
<param>
 
<param>
 
</param>
 
</param>
 +
</syntaxhighlight>
  
 
ou encore
 
ou encore
  
 
+
<syntaxhighlight lang="xml">
 
<param>
 
<param>
 
   <doc type="*"/>
 
   <doc type="*"/>
 
</param>
 
</param>
 +
</syntaxhighlight>
  
 
ou encore
 
ou encore
  
 +
<syntaxhighlight lang="xml">
 
<param>
 
<param>
 
   <doc type="*">
 
   <doc type="*">
Ligne 168 : Ligne 114 :
 
   </doc>
 
   </doc>
 
</param>
 
</param>
 
+
</syntaxhighlight>
Exemple de XML de paramétrage plus évolué
 
 
 
 
 
<param>
 
  <doc type="BL">
 
    <!-- récupération du champ COD_TIE_EXT -->
 
    <field id="COD_TIE_EXT"/>
 
    <!-- récupération du champ LBA_PAY -->
 
    <field id="LBA_PAY"/>
 
    (...)
 
    <!--Récupération d’un champ via une requête XPATH, afin de le mettre à disposition de
 
    l’entête ou du pied de page par exemple. -->
 
    <field id="DATE" from="list[@id='L1']/item[1]" name="DATE"/>
 
    <field id="DAT_LIS_OLE" from="list[@id='PRODUITS']/item/list[@id='article']/item"
 
    function="max(list[@'detail']/item[1]/field[@id='DAT_LIV'])" name="DAT_LIS_OLE"></field>
 
    (...)
 
    <!-- Construction d’un pavé d’adresse à partir des champs trouvés dans le document -->
 
    <table>
 
      <line name="lig1">
 
        <field id="NOM_CLI"/>
 
      </line>
 
      <line name="lig2">
 
        <field id="ADD_CLI"/>
 
      </line>
 
      <line name="lig6">
 
        <field id="COD_POS"/>
 
        <field id="VILLE"/>
 
      </line>
 
    </table>
 
    (...)
 
 
 
    <!-- Lecture de la liste nommée « PRODUITS » -->
 
    <list id="PRODUITS" group-by="key1">
 
      <!-- Récupération de la ligne d'entête nommée "head" si présente -->
 
      <items type='head'>
 
        <field id="col1" />
 
        <field id="col2" />
 
        <field id="col3" />
 
      </items>
 
      <!-- Nouvelle balise <group> pour chaque nouvel item (dans le but de créer des groupes insécables) -->
 
      <items indivisible="Y" >
 
        <!-- Création d’une ligne « infos_produit » contenant le champ DAT_LIS_OLE et la somme des montants -->
 
        <line name="infos_produit">
 
          <field id="DAT_LIS_OLE" />
 
          <field id="MONTANT" grouping-function="sum()" />
 
        </line>
 
        <line name="complement_produit">
 
          <field id="LOT" grouping-function="concat(';')" />
 
        </line>
 
        <!-- Lecture de la sous liste nommée « CASES » -->
 
        <list id="CASES" same-line-as-parent="true">
 
          <!-- Lecture de tous les items de cette liste et concaténation en une seule ligne -->
 
          <items group-by="*">
 
            <line name="CASES">
 
              <!-- Création d’une ligne contenant toutes les cases séparées par des virgules -->
 
              <field id="CASE" grouping-function="concat(', ')" />
 
            </line>
 
          </items>
 
        </list>
 
        <!-- Création d’une ligne artificielle (déclencheur) -->
 
        <line name="libelles_tableau"/>
 
        <list id="DETAIL">
 
          <items>
 
            <line name="DETAIL_PRODUIT">
 
              <!-- Création d’une ligne "DETAIL" avec tous les champs disponibles -->
 
              <field>*</field>
 
            </line>
 
        </items>
 
        </list>
 
        <!-- Lecture du certificat de composition -->
 
        <list id="CER_COMPO">
 
          <items>
 
            <line name="ETIQ_CER_COMPO">
 
              <!-- Libellé « Composition » uniquement sur la 1ère ligne -->
 
              <field name="TIT_CERTIF" item="1">Composition</field>
 
              <!-- Champ TXT_CERTIF avec sauts de lignes tous les 110 caractères maxi -->
 
              <field id="TXT_CERTIF" split="110" align="justify"/>
 
            </line>
 
          </items>
 
        </list>
 
        <!-- Lecture du certificat de garantie -->
 
        <list id="CER_GAR">
 
          <!-- Regroupement des “item" par lots de 2 (2 colonnes) -->
 
          <items columns="2">
 
            <line name="ETIQ_DET_CER_GAR">
 
              <field name="TIT_CERTIF" item="1">Garantie</field>
 
              <field id="TXT_CERTIF"/>
 
            </line>
 
          </items>
 
        </list>
 
        <line name="TEXT_OGM">
 
          <field name="TIT_CERTIF">Norme ALICOOP : </field>
 
          <!-- Récupération de INFO_OGM dans l'élément racine du XML -->
 
          <field id="INFO_OGM" from="global-data()" split="100" indentation="16"/>
 
        </line>
 
        <!-- Certificat de composition matières premières -->
 
        <list id="CER_COMPO_MAT">
 
          <items>
 
            <line name="CER_COMPOS_MAT">
 
              <field id="TXT_CERTIF" split="100" indentation="16"/>
 
            </line>
 
          </items>
 
        </list>
 
      </items>
 
    </list>
 
  </doc>
 
</param>
 

Version du 20 avril 2021 à 20:12

Structure du XML de paramétrage

De manière générale, ce fichier XML de paramétrage a la même structure que le document à produire, c'est-à-dire qu'en lisant ce XML, on doit pouvoir reconnaître la manière dont le document sera structuré visuellement de haut en bas.

<?xml version="1.0" encoding="UTF-8"?>
<param version="1.0" data-version="1.0" xmlns="http://mappingsuite.com/designer" decimal-separator="," thousands-separator=" ">
  <doc type="TYPE_DOCUMENT">
    <field id="NOM_CHAMP" name="SURCHARGE_NOM_CHAMP">
    <field id="*">
    <field id="NOM_CHAMP" from="xxxxxxxx" where="xxxxxxx"/>
    (...)
    <!-- Tableau personnalisé -->
    <table name="NOM_TABLEAU">
      <line name="NOM_LIGNE">
        <field id="NOM_CHAMP"/>
      </line>
      <line name="NOM_LIGNE">
        <field id="NOM_CHAMP"/>
        <field id="NOM_CHAMP"/>
      </line>
    </table>
    (...)
    <!-- Liste -->
    <list id="NOM_LISTE">
      <items>
        <line name="xxxxxxx">
          <field id="NOM_CHAMP"/>
          <field id="NOM_CHAMP"/>
          <...>
        </line>
        <line name="xxxxxxx"/>
        (...)
        <list id="NOM_SOUS_LISTE" >
          <items>
            <line name="NOM_LIGNE">
              <field>*</field>
            </line>
            (...)
            <list id="NOM_SOUS_LISTE" >
              <items>
                <line name="NOM_LIGNE">
                  <field>*</field>
                </line>
                (...)
              </items>
              (...)
            </list>
            (...)
          </items>
          (...)
        </list>
        (...)
      </items>
      (...)
    </list>
    (...)
  </doc>
</param>

Exemple de XML de paramétrage très simple

Le paramétrage suivant permet de récupérer intégralement les informations du fichier XML de données sur 3 niveaux de listes afin de générer un fichier XML compatible avec le Designer Mapping, sans aucune utilisation de fonctionnalités avancées.

<param>
  <doc type="BL">
    <field id="*"/>
    <list id="*">
      <items>
        <line>
          <field id="*" />
        </line>
        <list id="*" >
          <items>
            <line>
              <field id="*" />
            </line>
            <list id="*">
              <items>
                <line>
                  <field id="*" />
                </line>
            </list>
          </items>
        </list>
      </items>
    </list>
  </doc>
</param>

Mais les exemples suivants, encore plus simples, permettent également de récupérer la totalité du fichier XML de données.

<param>
</param>

ou encore

<param>
  <doc type="*"/>
</param>

ou encore

<param>
  <doc type="*">
    <field id="*"/>
    <list id="*"/>
  </doc>
</param>