ONYX - 9.0 - Utilisation - Traitements XSL

Différence entre versions

De MappingDoc
(Tri, réagencement, regroupement de lignes)
(Tri, réagencement, regroupement de lignes)
Ligne 310 : Ligne 310 :
 
- Afficher les autres lignes du groupe Article dans un certain ordre : Info_livraison puis info_article puis info_remise puis info_compo et en dernier toutes les lignes commençant par la valeur tailles<br>
 
- Afficher les autres lignes du groupe Article dans un certain ordre : Info_livraison puis info_article puis info_remise puis info_compo et en dernier toutes les lignes commençant par la valeur tailles<br>
  
<u>XML d'entrée</u> :
+
 
 +
<u>XML d'entrée (uniquement le groupe Article pour simplifier la lisibilité du document)</u> :
  
 
  <group name="Article">
 
  <group name="Article">
Ligne 383 : Ligne 384 :
 
   <field name="GTIN_Taille_Echantillon">03789456062585</field>
 
   <field name="GTIN_Taille_Echantillon">03789456062585</field>
 
   </line>
 
   </line>
<line name="info_compo">
+
  <line name="info_compo">
<field name="Composition"><![CDATA[98% Polyester-2% Coton]]></field>
+
  <field name="Composition"><![CDATA[98% Polyester-2% Coton]]></field>
</line>
+
  </line>
<line name="tailles_1">
+
  <line name="tailles_1">
<field name="Qte">20</field>
+
  <field name="Qte">20</field>
<field name="Unt_Oeuvre">U</field>
+
  <field name="Unt_Oeuvre">U</field>
<field name="Lib_Unt_Oeuvre"><![CDATA[Unité(s)]]></field>
+
  <field name="Lib_Unt_Oeuvre"><![CDATA[Unité(s)]]></field>
<field name="Gratuit">Non</field>
+
  </line>
<field name="PU_Brut">90,00</field>
+
  <line name="tailles_2">
<field name="U_Net_Net">85,50</field>
+
  <field name="Qte">2</field>
<field name="Montant_Brut">1 980,00</field>
+
  <field name="Unt_Oeuvre">U</field>
<field name="Montant_Net">1 881,00</field>
+
  <field name="Lib_Unt_Oeuvre"><![CDATA[Unité(s)]]></field>
<field name="Montant_Net_Net">1 881,00</field>
+
  </line>
<field name="Indice_T01">01</field>
+
</group>
<field name="Libelle_T01">2 A</field>
+
<group name="Article">
<field name="Qte_T01">2</field>
+
  <line name="info_livraison">
<field name="GTIN_T01">03789456062523</field>
+
  <field name="Date_LivDem">2ème Qz Septembre 2014</field>
<field name="Code_Referencement_T01"/>
+
  <field name="Sem_LivDem">39</field>
<field name="Indice_T02">02</field>
+
  <field name="Date_LivConf">2ème Qz Septembre 2014</field>
<field name="Libelle_T02">3 A</field>
+
  <field name="Sem_LivConf">39</field>
<field name="Qte_T02">2</field>
+
  </line>
<field name="GTIN_T02">03789456062530</field>
+
  <line name="info_article">
<field name="Code_Referencement_T02"/>
+
  <field name="Num_Ligne">00001</field>
<field name="Indice_T03">03</field>
+
  <field name="Type_Ligne">R</field>
<field name="Libelle_T03">4 A</field>
+
  <field name="Reference">HOLDEN734</field>
<field name="Qte_T03">2</field>
+
  <field name="Designation"><![CDATA[HOLDEN Blanc]]></field>
<field name="GTIN_T03">03789456062547</field>
+
  <field name="GTIN_Taille_Echantillon">03789456062585</field>
<field name="Code_Referencement_T03"/>
+
  </line>
<field name="Indice_T04">04</field>
+
  <line name="info_remise">
<field name="Libelle_T04">5 A</field>
+
  <field name="Remise_Totale_Ligne">5</field>
<field name="Qte_T04">2</field>
+
  </line>
<field name="GTIN_T04">03789456062554</field>
+
  <line name="tailles_1">
<field name="Code_Referencement_T04"/>
+
  <field name="Qte">20</field>
<field name="Indice_T05">05</field>
+
  <field name="Unt_Oeuvre">U</field>
<field name="Libelle_T05">6 A</field>
+
  <field name="Lib_Unt_Oeuvre"><![CDATA[Unité(s)]]></field>
<field name="Qte_T05">2</field>
+
  </line>
<field name="GTIN_T05">03789456062561</field>
+
  <line name="tailles_2">
<field name="Code_Referencement_T05"/>
+
  <field name="Qte">2</field>
<field name="Indice_T06">06</field>
+
  <field name="Unt_Oeuvre">U</field>
<field name="Libelle_T06">7 A</field>
+
  <field name="Lib_Unt_Oeuvre"><![CDATA[Unité(s)]]></field>
<field name="Qte_T06">2</field>
+
  </line>
<field name="GTIN_T06">03789456062578</field>
+
</group>
<field name="Code_Referencement_T06"/>
+
<group name="Article">
<field name="Indice_T07">07</field>
+
  <line name="info_livraison">
<field name="Libelle_T07">8 A</field>
+
  <field name="Date_LivDem">2ème Qz Septembre 2014</field>
<field name="Qte_T07">2</field>
+
  <field name="Sem_LivDem">39</field>
<field name="GTIN_T07">03789456062585</field>
+
  <field name="Date_LivConf">2ème Qz Septembre 2014</field>
<field name="Code_Referencement_T07"/>
+
  <field name="Sem_LivConf">39</field>
<field name="Indice_T08">08</field>
+
  </line>
<field name="Libelle_T08">9 A</field>
+
  <line name="info_article">
<field name="Qte_T08">2</field>
+
  <field name="Num_Ligne">00001</field>
<field name="GTIN_T08">03789456062592</field>
+
  <field name="Type_Ligne">R</field>
<field name="Code_Referencement_T08"/>
+
  <field name="Reference">HOLDEN734</field>
<field name="Indice_T09">09</field>
+
  <field name="Designation"><![CDATA[HOLDEN Blanc]]></field>
<field name="Libelle_T09">10 A</field>
+
  <field name="GTIN_Taille_Echantillon">03789456062585</field>
<field name="Qte_T09">2</field>
+
  </line>
<field name="GTIN_T09">03789456062608</field>
+
  <line name="tailles_1">
<field name="Code_Referencement_T09"/>
+
  <field name="Qte">20</field>
<field name="Indice_T10">10</field>
+
  <field name="Unt_Oeuvre">U</field>
<field name="Libelle_T10">11 A</field>
+
  </line>
<field name="Qte_T10">2</field>
+
  <line name="tailles_2">
<field name="GTIN_T10">03789456062615</field>
+
  <field name="Qte">2</field>
<field name="Code_Referencement_T10"/>
+
  <field name="Unt_Oeuvre">U</field>
</line>
+
  <field name="Lib_Unt_Oeuvre"><![CDATA[Unité(s)]]></field>
<line name="tailles_2">
+
  </line>
<field name="Qte">2</field>
+
</group>
<field name="Unt_Oeuvre">U</field>
+
<group name="Article">
<field name="Lib_Unt_Oeuvre"><![CDATA[Unité(s)]]></field>
+
  <line name="info_article">
<field name="Gratuit">Non</field>
+
  <field name="Num_Ligne">00001</field>
<field name="PU_Brut">90,00</field>
+
  <field name="Type_Ligne">R</field>
<field name="U_Net_Net">85,50</field>
+
  <field name="Reference">HOLDEN734</field>
<field name="Montant_Brut">1 980,00</field>
+
  <field name="Designation"><![CDATA[HOLDEN Blanc]]></field>
<field name="Montant_Net">1 881,00</field>
+
  <field name="GTIN_Taille_Echantillon">03789456062585</field>
<field name="Montant_Net_Net">1 881,00</field>
+
  </line>
<field name="Qte">22</field>
+
  <line name="info_compo">
<field name="Unt_Oeuvre">U</field>
+
  <field name="Composition"><![CDATA[98% Polyester-2% Coton]]></field>
<field name="Lib_Unt_Oeuvre"><![CDATA[Unité(s)]]></field>
+
  </line>
<field name="Gratuit">Non</field>
+
  <line name="tailles_1">
<field name="PU_Brut">90,00</field>
+
  <field name="Qte">20</field>
<field name="U_Net_Net">85,50</field>
+
  <field name="Unt_Oeuvre">U</field>
<field name="Montant_Brut">1 980,00</field>
+
  <field name="Lib_Unt_Oeuvre"><![CDATA[Unité(s)]]></field>
<field name="Montant_Net">1 881,00</field>
+
  </line>
<field name="Montant_Net_Net">1 881,00</field>
+
  <line name="tailles_2">
<field name="Indice_T11">11</field>
+
  <field name="Qte">2</field>
<field name="Libelle_T11">12 A</field>
+
  <field name="Unt_Oeuvre">U</field>
<field name="Qte_T11">2</field>
+
  <field name="Lib_Unt_Oeuvre"><![CDATA[Unité(s)]]></field>
<field name="GTIN_T11">03789456084921</field>
+
  </line>
<field name="Code_Referencement_T11"/>
+
</group>
<field name="Lib_Taille_Min">2 A</field>
+
 
<field name="Lib_Taille_Max">12 A</field>
+
 
<field name="Qte_Totale">22</field>
+
 
<field name="PU_Brut">90,00</field>
+
 
<field name="PU_Net_Net">85,50</field>
 
<field name="Montant_Net_Net">1 881,00</field>
 
<field name="PVC">250,00  €</field>
 
<field name="Origine_PVC">TAR</field>
 
</line>
 
</group>
 
<group name="Article">
 
<line name="info_livraison">
 
<field name="Date_LivDem">2ème Qz Septembre 2014</field>
 
<field name="Sem_LivDem">39</field>
 
<field name="Date_LivConf">2ème Qz Septembre 2014</field>
 
<field name="Sem_LivConf">39</field>
 
</line>
 
<line name="info_article">
 
<field name="Num_Ligne">00001</field>
 
<field name="Type_Ligne">R</field>
 
<field name="Reference">HOLDEN734</field>
 
<field name="Designation"><![CDATA[HOLDEN Blanc]]></field>
 
<field name="GTIN_Taille_Echantillon">03789456062585</field>
 
<field name="GTIN">00000000000000</field>
 
<field name="Modele">HOLDEN</field>
 
<field name="Designation_Mod"><![CDATA[HOLDENx]]></field>
 
<field name="Coloris"/>
 
<field name="Lib_Coloris"><![CDATA[Blanc cassé]]></field>
 
<field name="Lib_C_Coloris"/>
 
<field name="Lib_Marque"><![CDATA[CHACOK]]></field>
 
<field name="Code_Agent">00001</field>
 
<field name="Nom_Agent">Agent commercial Rennes</field>
 
<field name="Qte">22</field>
 
<field name="Unt_Oeuvre">U</field>
 
<field name="Lib_Unt_Oeuvre"><![CDATA[Unité(s)]]></field>
 
<field name="Gratuit">Non</field>
 
<field name="PU_Brut">90,00</field>
 
<field name="U_Net_Net">85,50</field>
 
<field name="Montant_Brut">1 980,00</field>
 
<field name="Montant_Net">1 881,00</field>
 
<field name="Montant_Net_Net">1 881,00</field>
 
<field name="Nom_Tiers_Final"/>
 
<field name="Ville_Tiers_Final"/>
 
<field name="Silhouette"/>
 
<field name="Code_Rayon"/>
 
<field name="Libelle_Rayon"/>
 
<field name="Image">img4.jpg</field>
 
</line>
 
<line name="info_remise">
 
<field name="Remise_Totale_Ligne">5</field>
 
</line>
 
<line name="tailles_1">
 
<field name="Qte">20</field>
 
<field name="Unt_Oeuvre">U</field>
 
<field name="Lib_Unt_Oeuvre"><![CDATA[Unité(s)]]></field>
 
<field name="Gratuit">Non</field>
 
<field name="PU_Brut">90,00</field>
 
<field name="U_Net_Net">85,50</field>
 
<field name="Montant_Brut">1 980,00</field>
 
<field name="Montant_Net">1 881,00</field>
 
<field name="Montant_Net_Net">1 881,00</field>
 
<field name="Indice_T01">01</field>
 
<field name="Libelle_T01">2 A</field>
 
<field name="Qte_T01">2</field>
 
<field name="GTIN_T01">03789456062523</field>
 
<field name="Code_Referencement_T01"/>
 
<field name="Indice_T02">02</field>
 
<field name="Libelle_T02">3 A</field>
 
<field name="Qte_T02">2</field>
 
<field name="GTIN_T02">03789456062530</field>
 
<field name="Code_Referencement_T02"/>
 
<field name="Indice_T03">03</field>
 
<field name="Libelle_T03">4 A</field>
 
<field name="Qte_T03">2</field>
 
<field name="GTIN_T03">03789456062547</field>
 
<field name="Code_Referencement_T03"/>
 
<field name="Indice_T04">04</field>
 
<field name="Libelle_T04">5 A</field>
 
<field name="Qte_T04">2</field>
 
<field name="GTIN_T04">03789456062554</field>
 
<field name="Code_Referencement_T04"/>
 
<field name="Indice_T05">05</field>
 
<field name="Libelle_T05">6 A</field>
 
<field name="Qte_T05">2</field>
 
<field name="GTIN_T05">03789456062561</field>
 
<field name="Code_Referencement_T05"/>
 
<field name="Indice_T06">06</field>
 
<field name="Libelle_T06">7 A</field>
 
<field name="Qte_T06">2</field>
 
<field name="GTIN_T06">03789456062578</field>
 
<field name="Code_Referencement_T06"/>
 
<field name="Indice_T07">07</field>
 
<field name="Libelle_T07">8 A</field>
 
<field name="Qte_T07">2</field>
 
<field name="GTIN_T07">03789456062585</field>
 
<field name="Code_Referencement_T07"/>
 
<field name="Indice_T08">08</field>
 
<field name="Libelle_T08">9 A</field>
 
<field name="Qte_T08">2</field>
 
<field name="GTIN_T08">03789456062592</field>
 
<field name="Code_Referencement_T08"/>
 
<field name="Indice_T09">09</field>
 
<field name="Libelle_T09">10 A</field>
 
<field name="Qte_T09">2</field>
 
<field name="GTIN_T09">03789456062608</field>
 
<field name="Code_Referencement_T09"/>
 
<field name="Indice_T10">10</field>
 
<field name="Libelle_T10">11 A</field>
 
<field name="Qte_T10">2</field>
 
<field name="GTIN_T10">03789456062615</field>
 
<field name="Code_Referencement_T10"/>
 
</line>
 
<line name="tailles_2">
 
<field name="Qte">2</field>
 
<field name="Unt_Oeuvre">U</field>
 
<field name="Lib_Unt_Oeuvre"><![CDATA[Unité(s)]]></field>
 
<field name="Gratuit">Non</field>
 
<field name="PU_Brut">90,00</field>
 
<field name="U_Net_Net">85,50</field>
 
<field name="Montant_Brut">1 980,00</field>
 
<field name="Montant_Net">1 881,00</field>
 
<field name="Montant_Net_Net">1 881,00</field>
 
<field name="Qte">22</field>
 
<field name="Unt_Oeuvre">U</field>
 
<field name="Lib_Unt_Oeuvre"><![CDATA[Unité(s)]]></field>
 
<field name="Gratuit">Non</field>
 
<field name="PU_Brut">90,00</field>
 
<field name="U_Net_Net">85,50</field>
 
<field name="Montant_Brut">1 980,00</field>
 
<field name="Montant_Net">1 881,00</field>
 
<field name="Montant_Net_Net">1 881,00</field>
 
<field name="Indice_T11">11</field>
 
<field name="Libelle_T11">12 A</field>
 
<field name="Qte_T11">2</field>
 
<field name="GTIN_T11">03789456084921</field>
 
<field name="Code_Referencement_T11"/>
 
<field name="Lib_Taille_Min">2 A</field>
 
<field name="Lib_Taille_Max">12 A</field>
 
<field name="Qte_Totale">22</field>
 
<field name="PU_Brut">90,00</field>
 
<field name="PU_Net_Net">85,50</field>
 
<field name="Montant_Net_Net">1 881,00</field>
 
<field name="PVC">250,00  €</field>
 
<field name="Origine_PVC">TAR</field>
 
</line>
 
</group>
 
<group name="Article">
 
<line name="info_livraison">
 
<field name="Date_LivDem">2ème Qz Septembre 2014</field>
 
<field name="Sem_LivDem">39</field>
 
<field name="Date_LivConf">2ème Qz Septembre 2014</field>
 
<field name="Sem_LivConf">39</field>
 
</line>
 
<line name="info_article">
 
<field name="Num_Ligne">00001</field>
 
<field name="Type_Ligne">R</field>
 
<field name="Reference">HOLDEN734</field>
 
<field name="Designation"><![CDATA[HOLDEN Blanc]]></field>
 
<field name="GTIN_Taille_Echantillon">03789456062585</field>
 
<field name="GTIN">00000000000000</field>
 
<field name="Modele">HOLDEN</field>
 
<field name="Designation_Mod"><![CDATA[HOLDENx]]></field>
 
<field name="Coloris"/>
 
<field name="Lib_Coloris"><![CDATA[Blanc cassé]]></field>
 
<field name="Lib_C_Coloris"/>
 
<field name="Lib_Marque"><![CDATA[CHACOK]]></field>
 
<field name="Code_Agent">00001</field>
 
<field name="Nom_Agent">Agent commercial Rennes</field>
 
<field name="Qte">22</field>
 
<field name="Unt_Oeuvre">U</field>
 
<field name="Lib_Unt_Oeuvre"><![CDATA[Unité(s)]]></field>
 
<field name="Gratuit">Non</field>
 
<field name="PU_Brut">90,00</field>
 
<field name="U_Net_Net">85,50</field>
 
<field name="Montant_Brut">1 980,00</field>
 
<field name="Montant_Net">1 881,00</field>
 
<field name="Montant_Net_Net">1 881,00</field>
 
<field name="Nom_Tiers_Final"/>
 
<field name="Ville_Tiers_Final"/>
 
<field name="Silhouette"/>
 
<field name="Code_Rayon"/>
 
<field name="Libelle_Rayon"/>
 
<field name="Image">img5.jpg</field>
 
</line>
 
<line name="tailles_1">
 
<field name="Qte">20</field>
 
<field name="Unt_Oeuvre">U</field>
 
<field name="Lib_Unt_Oeuvre"><![CDATA[Unité(s)]]></field>
 
<field name="Gratuit">Non</field>
 
<field name="PU_Brut">90,00</field>
 
<field name="U_Net_Net">85,50</field>
 
<field name="Montant_Brut">1 980,00</field>
 
<field name="Montant_Net">1 881,00</field>
 
<field name="Montant_Net_Net">1 881,00</field>
 
<field name="Indice_T01">01</field>
 
<field name="Libelle_T01">2 A</field>
 
<field name="Qte_T01">2</field>
 
<field name="GTIN_T01">03789456062523</field>
 
<field name="Code_Referencement_T01"/>
 
<field name="Indice_T02">02</field>
 
<field name="Libelle_T02">3 A</field>
 
<field name="Qte_T02">2</field>
 
<field name="GTIN_T02">03789456062530</field>
 
<field name="Code_Referencement_T02"/>
 
<field name="Indice_T03">03</field>
 
<field name="Libelle_T03">4 A</field>
 
<field name="Qte_T03">2</field>
 
<field name="GTIN_T03">03789456062547</field>
 
<field name="Code_Referencement_T03"/>
 
<field name="Indice_T04">04</field>
 
<field name="Libelle_T04">5 A</field>
 
<field name="Qte_T04">2</field>
 
<field name="GTIN_T04">03789456062554</field>
 
<field name="Code_Referencement_T04"/>
 
<field name="Indice_T05">05</field>
 
<field name="Libelle_T05">6 A</field>
 
<field name="Qte_T05">2</field>
 
<field name="GTIN_T05">03789456062561</field>
 
<field name="Code_Referencement_T05"/>
 
<field name="Indice_T06">06</field>
 
<field name="Libelle_T06">7 A</field>
 
<field name="Qte_T06">2</field>
 
<field name="GTIN_T06">03789456062578</field>
 
<field name="Code_Referencement_T06"/>
 
<field name="Indice_T07">07</field>
 
<field name="Libelle_T07">8 A</field>
 
<field name="Qte_T07">2</field>
 
<field name="GTIN_T07">03789456062585</field>
 
<field name="Code_Referencement_T07"/>
 
<field name="Indice_T08">08</field>
 
<field name="Libelle_T08">9 A</field>
 
<field name="Qte_T08">2</field>
 
<field name="GTIN_T08">03789456062592</field>
 
<field name="Code_Referencement_T08"/>
 
<field name="Indice_T09">09</field>
 
<field name="Libelle_T09">10 A</field>
 
<field name="Qte_T09">2</field>
 
<field name="GTIN_T09">03789456062608</field>
 
<field name="Code_Referencement_T09"/>
 
<field name="Indice_T10">10</field>
 
<field name="Libelle_T10">11 A</field>
 
<field name="Qte_T10">2</field>
 
<field name="GTIN_T10">03789456062615</field>
 
<field name="Code_Referencement_T10"/>
 
</line>
 
<line name="tailles_2">
 
<field name="Qte">2</field>
 
<field name="Unt_Oeuvre">U</field>
 
<field name="Lib_Unt_Oeuvre"><![CDATA[Unité(s)]]></field>
 
<field name="Gratuit">Non</field>
 
<field name="PU_Brut">90,00</field>
 
<field name="U_Net_Net">85,50</field>
 
<field name="Montant_Brut">1 980,00</field>
 
<field name="Montant_Net">1 881,00</field>
 
<field name="Montant_Net_Net">1 881,00</field>
 
<field name="Qte">22</field>
 
<field name="Unt_Oeuvre">U</field>
 
<field name="Lib_Unt_Oeuvre"><![CDATA[Unité(s)]]></field>
 
<field name="Gratuit">Non</field>
 
<field name="PU_Brut">90,00</field>
 
<field name="U_Net_Net">85,50</field>
 
<field name="Montant_Brut">1 980,00</field>
 
<field name="Montant_Net">1 881,00</field>
 
<field name="Montant_Net_Net">1 881,00</field>
 
<field name="Indice_T11">11</field>
 
<field name="Libelle_T11">12 A</field>
 
<field name="Qte_T11">2</field>
 
<field name="GTIN_T11">03789456084921</field>
 
<field name="Code_Referencement_T11"/>
 
<field name="Lib_Taille_Min">2 A</field>
 
<field name="Lib_Taille_Max">12 A</field>
 
<field name="Qte_Totale">22</field>
 
<field name="PU_Brut">90,00</field>
 
<field name="PU_Net_Net">85,50</field>
 
<field name="Montant_Net_Net">1 881,00</field>
 
<field name="PVC">250,00  €</field>
 
<field name="Origine_PVC">TAR</field>
 
</line>
 
</group>
 
<group name="Article">
 
<line name="info_article">
 
<field name="Num_Ligne">00001</field>
 
<field name="Type_Ligne">R</field>
 
<field name="Reference">HOLDEN734</field>
 
<field name="Designation"><![CDATA[HOLDEN Blanc]]></field>
 
<field name="GTIN_Taille_Echantillon">03789456062585</field>
 
<field name="GTIN">00000000000000</field>
 
<field name="Modele">HOLDEN</field>
 
<field name="Designation_Mod"><![CDATA[HOLDENx]]></field>
 
<field name="Coloris"/>
 
<field name="Lib_Coloris"><![CDATA[Blanc cassé]]></field>
 
<field name="Lib_C_Coloris"/>
 
<field name="Lib_Marque"><![CDATA[CHACOK]]></field>
 
<field name="Code_Agent">00001</field>
 
<field name="Nom_Agent">Agent commercial Rennes</field>
 
<field name="Qte">22</field>
 
<field name="Unt_Oeuvre">U</field>
 
<field name="Lib_Unt_Oeuvre"><![CDATA[Unité(s)]]></field>
 
<field name="Gratuit">Non</field>
 
<field name="PU_Brut">90,00</field>
 
<field name="U_Net_Net">85,50</field>
 
<field name="Montant_Brut">1 980,00</field>
 
<field name="Montant_Net">1 881,00</field>
 
<field name="Montant_Net_Net">1 881,00</field>
 
<field name="Nom_Tiers_Final"/>
 
<field name="Ville_Tiers_Final"/>
 
<field name="Silhouette"/>
 
<field name="Code_Rayon"/>
 
<field name="Libelle_Rayon"/>
 
<field name="Image">img6.jpg</field>
 
</line>
 
<line name="info_compo">
 
<field name="Composition"><![CDATA[98% Polyester-2% Coton]]></field>
 
</line>
 
<line name="tailles_1">
 
<field name="Qte">20</field>
 
<field name="Unt_Oeuvre">U</field>
 
<field name="Lib_Unt_Oeuvre"><![CDATA[Unité(s)]]></field>
 
<field name="Gratuit">Non</field>
 
<field name="PU_Brut">90,00</field>
 
<field name="U_Net_Net">85,50</field>
 
<field name="Montant_Brut">1 980,00</field>
 
<field name="Montant_Net">1 881,00</field>
 
<field name="Montant_Net_Net">1 881,00</field>
 
<field name="Indice_T01">01</field>
 
<field name="Libelle_T01">2 A</field>
 
<field name="Qte_T01">2</field>
 
<field name="GTIN_T01">03789456062523</field>
 
<field name="Code_Referencement_T01"/>
 
<field name="Indice_T02">02</field>
 
<field name="Libelle_T02">3 A</field>
 
<field name="Qte_T02">2</field>
 
<field name="GTIN_T02">03789456062530</field>
 
<field name="Code_Referencement_T02"/>
 
<field name="Indice_T03">03</field>
 
<field name="Libelle_T03">4 A</field>
 
<field name="Qte_T03">2</field>
 
<field name="GTIN_T03">03789456062547</field>
 
<field name="Code_Referencement_T03"/>
 
<field name="Indice_T04">04</field>
 
<field name="Libelle_T04">5 A</field>
 
<field name="Qte_T04">2</field>
 
<field name="GTIN_T04">03789456062554</field>
 
<field name="Code_Referencement_T04"/>
 
<field name="Indice_T05">05</field>
 
<field name="Libelle_T05">6 A</field>
 
<field name="Qte_T05">2</field>
 
<field name="GTIN_T05">03789456062561</field>
 
<field name="Code_Referencement_T05"/>
 
<field name="Indice_T06">06</field>
 
<field name="Libelle_T06">7 A</field>
 
<field name="Qte_T06">2</field>
 
<field name="GTIN_T06">03789456062578</field>
 
<field name="Code_Referencement_T06"/>
 
<field name="Indice_T07">07</field>
 
<field name="Libelle_T07">8 A</field>
 
<field name="Qte_T07">2</field>
 
<field name="GTIN_T07">03789456062585</field>
 
<field name="Code_Referencement_T07"/>
 
<field name="Indice_T08">08</field>
 
<field name="Libelle_T08">9 A</field>
 
<field name="Qte_T08">2</field>
 
<field name="GTIN_T08">03789456062592</field>
 
<field name="Code_Referencement_T08"/>
 
<field name="Indice_T09">09</field>
 
<field name="Libelle_T09">10 A</field>
 
<field name="Qte_T09">2</field>
 
<field name="GTIN_T09">03789456062608</field>
 
<field name="Code_Referencement_T09"/>
 
<field name="Indice_T10">10</field>
 
<field name="Libelle_T10">11 A</field>
 
<field name="Qte_T10">2</field>
 
<field name="GTIN_T10">03789456062615</field>
 
<field name="Code_Referencement_T10"/>
 
</line>
 
<line name="tailles_2">
 
<field name="Qte">2</field>
 
<field name="Unt_Oeuvre">U</field>
 
<field name="Lib_Unt_Oeuvre"><![CDATA[Unité(s)]]></field>
 
<field name="Gratuit">Non</field>
 
<field name="PU_Brut">90,00</field>
 
<field name="U_Net_Net">85,50</field>
 
<field name="Montant_Brut">1 980,00</field>
 
<field name="Montant_Net">1 881,00</field>
 
<field name="Montant_Net_Net">1 881,00</field>
 
<field name="Qte">22</field>
 
<field name="Unt_Oeuvre">U</field>
 
<field name="Lib_Unt_Oeuvre"><![CDATA[Unité(s)]]></field>
 
<field name="Gratuit">Non</field>
 
<field name="PU_Brut">90,00</field>
 
<field name="U_Net_Net">85,50</field>
 
<field name="Montant_Brut">1 980,00</field>
 
<field name="Montant_Net">1 881,00</field>
 
<field name="Montant_Net_Net">1 881,00</field>
 
<field name="Indice_T11">11</field>
 
<field name="Libelle_T11">12 A</field>
 
<field name="Qte_T11">2</field>
 
<field name="GTIN_T11">03789456084921</field>
 
<field name="Code_Referencement_T11"/>
 
<field name="Lib_Taille_Min">2 A</field>
 
<field name="Lib_Taille_Max">12 A</field>
 
<field name="Qte_Totale">22</field>
 
<field name="PU_Brut">90,00</field>
 
<field name="PU_Net_Net">85,50</field>
 
<field name="Montant_Net_Net">1 881,00</field>
 
<field name="PVC">250,00  €</field>
 
<field name="Origine_PVC">TAR</field>
 
</line>
 
</group>
 
<group name="Article">
 
<line name="info_article">
 
<field name="Num_Ligne">00001</field>
 
<field name="Type_Ligne">R</field>
 
<field name="Reference">HOLDEN734</field>
 
<field name="Designation"><![CDATA[HOLDEN Blanc]]></field>
 
<field name="GTIN_Taille_Echantillon">03789456062585</field>
 
<field name="GTIN">00000000000000</field>
 
<field name="Modele">HOLDEN</field>
 
<field name="Designation_Mod"><![CDATA[HOLDENx]]></field>
 
<field name="Coloris"/>
 
<field name="Lib_Coloris"><![CDATA[Blanc cassé]]></field>
 
<field name="Lib_C_Coloris"/>
 
<field name="Lib_Marque"><![CDATA[CHACOK]]></field>
 
<field name="Code_Agent">00001</field>
 
<field name="Nom_Agent">Agent commercial Rennes</field>
 
<field name="Qte">22</field>
 
<field name="Unt_Oeuvre">U</field>
 
<field name="Lib_Unt_Oeuvre"><![CDATA[Unité(s)]]></field>
 
<field name="Gratuit">Non</field>
 
<field name="PU_Brut">90,00</field>
 
<field name="U_Net_Net">85,50</field>
 
<field name="Montant_Brut">1 980,00</field>
 
<field name="Montant_Net">1 881,00</field>
 
<field name="Montant_Net_Net">1 881,00</field>
 
<field name="Nom_Tiers_Final"/>
 
<field name="Ville_Tiers_Final"/>
 
<field name="Silhouette"/>
 
<field name="Code_Rayon"/>
 
<field name="Libelle_Rayon"/>
 
<field name="Image">img7.jpg</field>
 
</line>
 
<line name="info_compo">
 
<field name="Composition"><![CDATA[98% Polyester-2% Coton]]></field>
 
</line>
 
<line name="info_remise">
 
<field name="Remise_Totale_Ligne">5</field>
 
</line>
 
<line name="tailles_1">
 
<field name="Qte">20</field>
 
<field name="Unt_Oeuvre">U</field>
 
<field name="Lib_Unt_Oeuvre"><![CDATA[Unité(s)]]></field>
 
<field name="Gratuit">Non</field>
 
<field name="PU_Brut">90,00</field>
 
<field name="U_Net_Net">85,50</field>
 
<field name="Montant_Brut">1 980,00</field>
 
<field name="Montant_Net">1 881,00</field>
 
<field name="Montant_Net_Net">1 881,00</field>
 
<field name="Indice_T01">01</field>
 
<field name="Libelle_T01">2 A</field>
 
<field name="Qte_T01">2</field>
 
<field name="GTIN_T01">03789456062523</field>
 
<field name="Code_Referencement_T01"/>
 
<field name="Indice_T02">02</field>
 
<field name="Libelle_T02">3 A</field>
 
<field name="Qte_T02">2</field>
 
<field name="GTIN_T02">03789456062530</field>
 
<field name="Code_Referencement_T02"/>
 
<field name="Indice_T03">03</field>
 
<field name="Libelle_T03">4 A</field>
 
<field name="Qte_T03">2</field>
 
<field name="GTIN_T03">03789456062547</field>
 
<field name="Code_Referencement_T03"/>
 
<field name="Indice_T04">04</field>
 
<field name="Libelle_T04">5 A</field>
 
<field name="Qte_T04">2</field>
 
<field name="GTIN_T04">03789456062554</field>
 
<field name="Code_Referencement_T04"/>
 
<field name="Indice_T05">05</field>
 
<field name="Libelle_T05">6 A</field>
 
<field name="Qte_T05">2</field>
 
<field name="GTIN_T05">03789456062561</field>
 
<field name="Code_Referencement_T05"/>
 
<field name="Indice_T06">06</field>
 
<field name="Libelle_T06">7 A</field>
 
<field name="Qte_T06">2</field>
 
<field name="GTIN_T06">03789456062578</field>
 
<field name="Code_Referencement_T06"/>
 
<field name="Indice_T07">07</field>
 
<field name="Libelle_T07">8 A</field>
 
<field name="Qte_T07">2</field>
 
<field name="GTIN_T07">03789456062585</field>
 
<field name="Code_Referencement_T07"/>
 
<field name="Indice_T08">08</field>
 
<field name="Libelle_T08">9 A</field>
 
<field name="Qte_T08">2</field>
 
<field name="GTIN_T08">03789456062592</field>
 
<field name="Code_Referencement_T08"/>
 
<field name="Indice_T09">09</field>
 
<field name="Libelle_T09">10 A</field>
 
<field name="Qte_T09">2</field>
 
<field name="GTIN_T09">03789456062608</field>
 
<field name="Code_Referencement_T09"/>
 
<field name="Indice_T10">10</field>
 
<field name="Libelle_T10">11 A</field>
 
<field name="Qte_T10">2</field>
 
<field name="GTIN_T10">03789456062615</field>
 
<field name="Code_Referencement_T10"/>
 
</line>
 
<line name="tailles_2">
 
<field name="Qte">2</field>
 
<field name="Unt_Oeuvre">U</field>
 
<field name="Lib_Unt_Oeuvre"><![CDATA[Unité(s)]]></field>
 
<field name="Gratuit">Non</field>
 
<field name="PU_Brut">90,00</field>
 
<field name="U_Net_Net">85,50</field>
 
<field name="Montant_Brut">1 980,00</field>
 
<field name="Montant_Net">1 881,00</field>
 
<field name="Montant_Net_Net">1 881,00</field>
 
<field name="Qte">22</field>
 
<field name="Unt_Oeuvre">U</field>
 
<field name="Lib_Unt_Oeuvre"><![CDATA[Unité(s)]]></field>
 
<field name="Gratuit">Non</field>
 
<field name="PU_Brut">90,00</field>
 
<field name="U_Net_Net">85,50</field>
 
<field name="Montant_Brut">1 980,00</field>
 
<field name="Montant_Net">1 881,00</field>
 
<field name="Montant_Net_Net">1 881,00</field>
 
<field name="Indice_T11">11</field>
 
<field name="Libelle_T11">12 A</field>
 
<field name="Qte_T11">2</field>
 
<field name="GTIN_T11">03789456084921</field>
 
<field name="Code_Referencement_T11"/>
 
<field name="Lib_Taille_Min">2 A</field>
 
<field name="Lib_Taille_Max">12 A</field>
 
<field name="Qte_Totale">22</field>
 
<field name="PU_Brut">90,00</field>
 
<field name="PU_Net_Net">85,50</field>
 
<field name="Montant_Net_Net">1 881,00</field>
 
<field name="PVC">250,00  €</field>
 
<field name="Origine_PVC">TAR</field>
 
</line>
 
</group>
 
  
  

Version du 27 mai 2019 à 15:26

Préambule

Cette documentation aborde des principes simples du XSLT. Mapping ne pourra en aucun cas faire le support des XLS réalisés par ses utilisateurs (clients ou partenaires) Cette documentation a uniquement pour but d'aider ses utilisateurs à profiter de cette fonctionnalité.


Principes

La suite Mapping Onyx permet l'utilisation des fonctionnalités XSLT. Le but étant de modifier la structure d'un fichier XML en une autre.


Cette transformation peut être appelée soit directement et nativement dans Designer ou soit nativement dans le moteur de règles via l'utilisation d'une "boite" du workflow.

Cette nouvelle fonctionnalité propre à Onyx permet notamment la modification d'un flux DRAWXML en un autre. (détails dans le chapitre Avantages)

Avantages

Le principal avantage de cette nouvelle fonctionnalité est la possibilité d'avoir un flux générique en entrée tout en gardant un flux de sortie personnalisé D'une manière très simple, Onyx nous donne la possibilité de modifier le flux en entrée de Mapping sans devoir retoucher le programme générant ce même flux. Il est alors très simplement possible pour un ou plusieurs documents donnés de (liste non exhaustive) :

  1. Filtrer des informations
  2. Trier les lignes d'un tableau
  3. Gérer les veuves et orphelines (Bloc de lignes devant être obligatoirement sur une même page)
  4. Ajouter des informations pour simplifier la conception
  5. Faire des conversions de formats de dates

Appels

Il existe 2 façons pour appeler les feuilles XSL :

Workflow

Pour appeler le XSL dans le moteur de règles Mapping (Workflow), nous devons utiliser une boite Workflow detype CMD et appeler le programme M-XSLTransoform en utilisant la commande suivante :

[%PATH_BIN%]/M-XSLTransform "[%MAP_FILE_IN%]" "[%PATH_XSL%]/MaFeuilleXSL.xsl" "[%MAP_FILE_OUT%]"

Liste des variables :
- PATH_BIN : Chemin du répertoire des binaires Mapping. (Répertoire Applications sur Onyx Windows ou Bin sur Onyx Linux)
- PATH_XSL : Chemin du répertoire contenant les feuilles XSL.
- MAP_FILE_IN : chemin + nom du fichier d'entrée de la "boite" du workflow
- MAP_FILE_OUT : chemin + nom du fichier de sortie de la "boite" du workflow

Designer

Il est tout à fait possible d'appeler des feuilles de transformation XSL directement dans Designer. Le gros avantage par rapport aux appels dans le workflow est l'aspect intégration native dans Designer. La feuille XSL permettant de personnaliser le document (tri sur les lignes, suppression de lignes, ajout de ligne, gestion des veuves et orphelines, etc) fait alors partie intégrante du projet Designer

Pour ce faire, il faut entrer le contenu de la feuille XLS dans la fenêtre de saisie accessible par le bouton Prétraitement XML de Designer encapsulé par de #xsltransform; et #endxsltransform;

Syntaxe :
#xsltransform;
//Contenu de ma feuille de XSL
#endxsltransform;



Exemples de feuilles de style XSL

Etant donnée que nous partons généralement d'un flux DRAWXML vers un autre flux DRAWXML, il est possible de créer des exemples de templates XSL ayant chacun une ou plusieurs fonctionnalités bien spécifiques :

Pour structurer la suite de cette documentation, nous allons partir d'un exemple simple recopiant simplement le flux d'entrée. Dans les exemples qui suivront, nous allons mettre en avant les différences par rapport à cet exemple "coquille générique" afin d'arriver aux résultats souhaités.

Coquille générique : Simple copie du flux d'entrée

Cet exemple n'a pas de fonction en tant que tel (car il n'est pas utile de faire un traitement XSL si on applique aucune modification aux flux de donnée) mais sera utilisé par tous les autres exemples qui suivront comme flux générique commun à tous les exemples.

 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" 
xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:fn="http://www.w3.org/2005/xpath-functions" version="2.0" exclude-result-prefixes="xsl fo xs 
fn">
<xsl:output method="xml" encoding="utf-8" indent="yes" omit-xml-declaration="no" cdata-section-elements="field"/>
 <xsl:template match="@*|*|comment()">
  <xsl:copy>
   <xsl:apply-templates select="@*|*|text()|comment()|processing-instruction()"/>
  </xsl:copy>
</xsl:stylesheet>

Bon à savoir :
Entete de la feuille XSL
template de simple recopie

Supprimer des types de ligne dans un groupe

Cet exemple permet de supprimer les types de lignes info_remise et info_compo de tous les groupes article du document.

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" 
xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:fn="http://www.w3.org/2005/xpath-functions" version="2.0" exclude-result-prefixes="xsl fo xs 
fn">
<xsl:output method="xml" encoding="utf-8" indent="yes" omit-xml-declaration="no" cdata-section-elements="field"/>
 <xsl:template match="/doc/page/group[@name='Article']/line[@name='info_remise']"/> 
 <xsl:template match="/doc/page/group[@name='Article']/line[@name='info_compo']"/> 
   <xsl:template match="@*|*|comment()">
     <xsl:copy>
      <xsl:apply-templates select="@*|*|text()|comment()|processing-instruction()"/>
     </xsl:copy>
   </xsl:template>
</xsl:stylesheet>

Ajouter une première ligne et une dernière ligne d'un groupe

Sur tous les groupes

Cet exemple permet de rajouter une ligne de début (first_line) et une ligne de fin (last_line) sur tous les groupes du flux d'entrée.

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" 
xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:fn="http://www.w3.org/2005/xpath-functions" version="2.0" exclude-result-prefixes="xsl fo xs fn">
<xsl:output method="xml" encoding="utf-8" indent="yes" omit-xml-declaration="no" cdata-section-elements="field"/>
<xsl:template match="group">
       <xsl:copy>
           <xsl:apply-templates select="@*"/>
           <line name="first_line"/>
           <xsl:apply-templates/>
           <line name="last_line"/>
       </xsl:copy>
   </xsl:template> 
   <xsl:template match="@*|*|comment()">
     <xsl:copy>
      <xsl:apply-templates select="@*|*|text()|comment()|processing-instruction()"/>
     </xsl:copy>
   </xsl:template>
</xsl:stylesheet>

Sur un groupe spécifique : Article

Cet exemple permet de rajouter une ligne de début (first_line) et une ligne de fin (last_line) uniquement sur le ou les groupes Article du flux d'entrée.

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" 
xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:fn="http://www.w3.org/2005/xpath-functions" version="2.0" exclude-result-prefixes="xsl fo xs fn">
<xsl:output method="xml" encoding="utf-8" indent="yes" omit-xml-declaration="no" cdata-section-elements="field"/>
 <xsl:template match="group[@name='Article']">
       <group name="Article">
           <line name="first_line"/>
           <xsl:apply-templates/>
           <line name="last_line"/>
       </group>
   </xsl:template>
   <xsl:template match="@*|*|comment()">
     <xsl:copy>
      <xsl:apply-templates select="@*|*|text()|comment()|processing-instruction()"/>
     </xsl:copy>
   </xsl:template>
</xsl:stylesheet>

Supprimer tous les groupes : group1

Cet exemple permet de supprimer tous les groupes group1 (présent sous /doc/page) du flux d'entrée.

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" 
xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:fn="http://www.w3.org/2005/xpath-functions" version="2.0" exclude-result-prefixes="xsl fo xs fn">
<xsl:output method="xml" encoding="utf-8" indent="yes" omit-xml-declaration="no" cdata-section-elements="field"/>
<xsl:template match="/doc/page/group[@name='group1']"/> 
   <xsl:template match="@*|*|comment()">
     <xsl:copy>
      <xsl:apply-templates select="@*|*|text()|comment()|processing-instruction()"/>
     </xsl:copy>
   </xsl:template>
</xsl:stylesheet>

Trier les lignes du groupe group1 par ordre décroissant

Cet exemple permet de trier toutes les lignes du groupe group1 du flux d'entrée par ordre décroissant de valeur de l'attribut name.

XML d'entrée :

<doc>
<page>
<field name="field1">ValueField1</field>
<field name="field2">ValueField2</field>
<field name="field3">ValueField3</field>
<field name="field4">ValueField4</field>
<group name="group1">
<line name="line1">
<field name="field1">ValueField1</field>
<field name="field2">ValueField2</field>
<field name="field3">ValueField3</field>
<field name="field4">ValueField4</field>
</line>
<line name="line2">
<field name="field1">ValueField1</field>
<field name="field2">ValueField2</field>
<field name="field3">ValueField3</field>
<field name="field4">ValueField4</field>
</line>
<line name="line3">
<field name="field1">ValueField1</field>
<field name="field2">ValueField2</field>
<field name="field3">ValueField3</field>
<field name="field4">ValueField4</field>
</line>
<line name="line4">
<field name="field1">ValueField1</field>
<field name="field2">ValueField2</field>
<field name="field3">ValueField3</field>
<field name="field4">ValueField4</field>
</line>
</group>
<group name="group2">
<line name="line1">
<field name="field1">ValueField1</field>
<field name="field2">ValueField2</field>
<field name="field3">ValueField3</field>
<field name="field4">ValueField4</field>
</line>
<line name="line2">
<field name="field1">ValueField1</field>
<field name="field2">ValueField2</field>
<field name="field3">ValueField3</field>
<field name="field4">ValueField4</field>
</line>
<line name="line3">
<field name="field1">ValueField1</field>
<field name="field2">ValueField2</field>
<field name="field3">ValueField3</field>
<field name="field4">ValueField4</field>
</line>
<line name="line4">
<field name="field1">ValueField1</field>
<field name="field2">ValueField2</field>
<field name="field3">ValueField3</field>
<field name="field4">ValueField4</field>
</line>
</group>
</page>
</doc>

Flux en sortie généré :

<?xml version="1.0" encoding="utf-8"?>
<doc>
<page>
<field name="field1">ValueField1</field>
<field name="field2">ValueField2</field>
<field name="field3">ValueField3</field>
<field name="field4">ValueField4</field>
<group name="group1">
<line name="line4">
<field name="field1">ValueField1</field>
<field name="field2">ValueField2</field>
<field name="field3">ValueField3</field>
<field name="field4">ValueField4</field>
</line>
<line name="line3">
<field name="field1">ValueField1</field>
<field name="field2">ValueField2</field>
<field name="field3">ValueField3</field>
<field name="field4">ValueField4</field>
</line>
<line name="line2">
<field name="field1">ValueField1</field>
<field name="field2">ValueField2</field>
<field name="field3">ValueField3</field>
<field name="field4">ValueField4</field>
</line>
<line name="line1">
<field name="field1">ValueField1</field>
<field name="field2">ValueField2</field>
<field name="field3">ValueField3</field>
<field name="field4">ValueField4</field>
</line>
</group>
<group name="group2">
<line name="line1">
<field name="field1">ValueField1</field>
<field name="field2">ValueField2</field>
<field name="field3">ValueField3</field>
<field name="field4">ValueField4</field>
</line>
<line name="line2">
<field name="field1">ValueField1</field>
<field name="field2">ValueField2</field>
<field name="field3">ValueField3</field>
<field name="field4">ValueField4</field>
</line>
<line name="line3">
<field name="field1">ValueField1</field>
<field name="field2">ValueField2</field>
<field name="field3">ValueField3</field>
<field name="field4">ValueField4</field>
</line>
<line name="line4">
<field name="field1">ValueField1</field>
<field name="field2">ValueField2</field>
<field name="field3">ValueField3</field>
<field name="field4">ValueField4</field>
</line>
</page>
</doc>

Feuille XSL utilisée :

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" 
xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:fn="http://www.w3.org/2005/xpath-functions" version="2.0" exclude-result-prefixes="xsl fo xs 
fn">
<xsl:output method="xml" encoding="utf-8" indent="yes" omit-xml-declaration="no" cdata-section-elements="field"/>
<xsl:template match="/doc/page/group[@name='group1']">
 <xsl:copy>
  <xsl:apply-templates select="@*"/>
    <xsl:apply-templates>
     <xsl:sort select="./@name" data-type="text" order="descending"/>
  </xsl:apply-templates>
 </xsl:copy>
 </xsl:template> 
   <xsl:template match="@*|*|comment()">
     <xsl:copy>
      <xsl:apply-templates select="@*|*|text()|comment()|processing-instruction()"/>
     </xsl:copy>
   </xsl:template>
</xsl:stylesheet>

Tri, réagencement, regroupement de lignes

Cet exemple permet de :
- Trier les lignes info_livraison des groupes Article par ordre alphabétique croissant
- Ecrire la ligne info_livraison uniquement si la valeur de son champs date_LivConf est différent de la ligne info_livraison précédente
- Afficher les autres lignes du groupe Article dans un certain ordre : Info_livraison puis info_article puis info_remise puis info_compo et en dernier toutes les lignes commençant par la valeur tailles


XML d'entrée (uniquement le groupe Article pour simplifier la lisibilité du document) :

<group name="Article">
 <line name="info_livraison">
  <field name="Date_LivDem">2ème Qz Septembre 2014</field>
  <field name="Sem_LivDem">39</field>
  <field name="Date_LivConf">2ème Qz Septembre 2014</field>
  <field name="Sem_LivConf">39</field>
 </line>
 <line name="info_article">
  <field name="Num_Ligne">00001</field>
  <field name="Type_Ligne">R</field>
  <field name="Reference">HOLDEN734</field>
  <field name="Designation"><![CDATA[HOLDEN Blanc]]></field>
  <field name="GTIN_Taille_Echantillon">03789456062585</field>
 </line>
 <line name="info_compo">
  <field name="Composition"><![CDATA[98% Polyester-2% Coton]]></field>
 </line>
 <line name="info_remise">
  <field name="Remise_Totale_Ligne">5</field>
 </line>
 <line name="tailles_1">
  <field name="Qte">20</field>
  <field name="Unt_Oeuvre">U</field>
  <field name="Lib_Unt_Oeuvre"><![CDATA[Unité(s)]]></field>
 </line>
 <line name="tailles_2">
  <field name="Qte">2</field>
  <field name="Unt_Oeuvre">U</field>
  <field name="Lib_Unt_Oeuvre"><![CDATA[Unité(s)]]></field>
 </line>
</group>
<group name="Article">
 <line name="info_livraison">
  <field name="Date_LivDem">2ème Qz Septembre 2014</field>
  <field name="Sem_LivDem">39</field>
  <field name="Date_LivConf">3ème trimestre 2014</field>
  <field name="Sem_LivConf">39</field>
 </line>
 <line name="info_article">
  <field name="Num_Ligne">00001</field>
  <field name="Type_Ligne">R</field>
  <field name="Reference">HOLDEN734</field>
  <field name="Designation"><![CDATA[HOLDEN Blanc]]></field>
  <field name="GTIN_Taille_Echantillon">03789456062585</field>
 </line>
 <line name="info_compo">
  <field name="Composition"><![CDATA[98% Polyester-2% Coton]]></field>
 </line>
 <line name="info_remise">
  <field name="Remise_Totale_Ligne">5,5</field>
 </line>
 <line name="tailles_1">
  <field name="Qte">20</field>
  <field name="Unt_Oeuvre">U</field>
  <field name="Lib_Unt_Oeuvre"><![CDATA[Unité(s)]]></field>
 </line>
</group>
<group name="Article">
 <line name="info_livraison">
  <field name="Date_LivDem">2ème Qz Septembre 2014</field>
  <field name="Sem_LivDem">39</field>
  <field name="Date_LivConf">2ème Qz Septembre 2014</field>
  <field name="Sem_LivConf">39</field>
 </line>
 <line name="info_article">
  <field name="Num_Ligne">00001</field>
  <field name="Type_Ligne">R</field>
  <field name="Reference">HOLDEN734</field>
  <field name="Designation"><![CDATA[HOLDEN Blanc]]></field>
  <field name="GTIN_Taille_Echantillon">03789456062585</field>
 </line>
 <line name="info_compo">
  <field name="Composition"><![CDATA[98% Polyester-2% Coton]]></field>
 </line>
 <line name="tailles_1">
  <field name="Qte">20</field>
  <field name="Unt_Oeuvre">U</field>
  <field name="Lib_Unt_Oeuvre"><![CDATA[Unité(s)]]></field>
 </line>
 <line name="tailles_2">
  <field name="Qte">2</field>
  <field name="Unt_Oeuvre">U</field>
  <field name="Lib_Unt_Oeuvre"><![CDATA[Unité(s)]]></field>
 </line>
</group>
<group name="Article">
 <line name="info_livraison">
  <field name="Date_LivDem">2ème Qz Septembre 2014</field>
  <field name="Sem_LivDem">39</field>
  <field name="Date_LivConf">2ème Qz Septembre 2014</field>
  <field name="Sem_LivConf">39</field>
 </line>
 <line name="info_article">
  <field name="Num_Ligne">00001</field>
  <field name="Type_Ligne">R</field>
  <field name="Reference">HOLDEN734</field>
  <field name="Designation"><![CDATA[HOLDEN Blanc]]></field>
  <field name="GTIN_Taille_Echantillon">03789456062585</field>
 </line>
 <line name="info_remise">
  <field name="Remise_Totale_Ligne">5</field>
 </line>
 <line name="tailles_1">
  <field name="Qte">20</field>
  <field name="Unt_Oeuvre">U</field>
  <field name="Lib_Unt_Oeuvre"><![CDATA[Unité(s)]]></field>
 </line>
 <line name="tailles_2">
  <field name="Qte">2</field>
  <field name="Unt_Oeuvre">U</field>
  <field name="Lib_Unt_Oeuvre"><![CDATA[Unité(s)]]></field>
 </line>
</group>
<group name="Article">
 <line name="info_livraison">
  <field name="Date_LivDem">2ème Qz Septembre 2014</field>
  <field name="Sem_LivDem">39</field>
  <field name="Date_LivConf">2ème Qz Septembre 2014</field>
  <field name="Sem_LivConf">39</field>
 </line>
 <line name="info_article">
  <field name="Num_Ligne">00001</field>
  <field name="Type_Ligne">R</field>
  <field name="Reference">HOLDEN734</field>
  <field name="Designation"><![CDATA[HOLDEN Blanc]]></field>
  <field name="GTIN_Taille_Echantillon">03789456062585</field>
 </line>
 <line name="tailles_1">
  <field name="Qte">20</field>
  <field name="Unt_Oeuvre">U</field>
 </line>
 <line name="tailles_2">
  <field name="Qte">2</field>
  <field name="Unt_Oeuvre">U</field>
  <field name="Lib_Unt_Oeuvre"><![CDATA[Unité(s)]]></field>
 </line>
</group>
<group name="Article">
 <line name="info_article">
  <field name="Num_Ligne">00001</field>
  <field name="Type_Ligne">R</field>
  <field name="Reference">HOLDEN734</field>
  <field name="Designation"><![CDATA[HOLDEN Blanc]]></field>
  <field name="GTIN_Taille_Echantillon">03789456062585</field>
 </line>
 <line name="info_compo">
  <field name="Composition"><![CDATA[98% Polyester-2% Coton]]></field>
 </line>
 <line name="tailles_1">
  <field name="Qte">20</field>
  <field name="Unt_Oeuvre">U</field>
  <field name="Lib_Unt_Oeuvre"><![CDATA[Unité(s)]]></field>
 </line>
 <line name="tailles_2">
  <field name="Qte">2</field>
  <field name="Unt_Oeuvre">U</field>
  <field name="Lib_Unt_Oeuvre"><![CDATA[Unité(s)]]></field>
 </line>
</group>





<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" version="2.0" exclude-result-prefixes="xsl xs"> <xsl:output method="xml" encoding="utf-8" indent="yes" omit-xml-declaration="no" cdata-section-elements="field"/> <xsl:template match="/doc/page"> <page> <xsl:apply-templates select="*[not(self::group[@name='Article'])]"/> <xsl:apply-templates select="group[@name='Article']"> <xsl:sort select="line[@name='info_livraison']/field[@name='Date_LivConf']" data-type="text" order="ascending"/> </xsl:apply-templates> </page> </xsl:template>

<xsl:template match="group[@name='Article']"> <group name="Article"> <xsl:if test="not(preceding-sibling::group[@name='Article']/line[@name='info_livraison']/field[@name='Date_LivConf'] = ./line[@name='info_livraison']/field[@name='Date_LivConf'])"> <xsl:apply-templates select="./line[@name='info_livraison']"/> </xsl:if> <xsl:apply-templates select="./line[@name='info_article']"/> <xsl:apply-templates select="./line[@name='info_remise']"/> <xsl:apply-templates select="./line[@name='info_compo']"/> <xsl:apply-templates select="./line[starts-with(@name, 'tailles')]"> <xsl:sort select="@name" data-type="text" order="ascending"/> </xsl:apply-templates> </group> </xsl:template>

<xsl:template match="@*|*|comment()"> <xsl:copy> <xsl:apply-templates select="@*|*|text()|comment()|processing-instruction()"/> </xsl:copy> </xsl:template> </xsl:stylesheet>