Accueil > Documentation > Les balises XPX > XPROC

XPROC

<xproc select="...">

La balise <xproc> permet de lire le contenu d'un fichier XML.

L'attribut "select", vous permet d'indiquer quelle partie du fichier vous recherchez. Notez que la balise va boucler le traitement que vous éxécutez à sa suite pour chaque résultat renvoyé.

De plus, le xproc crée une variable temporaire comportant le résultat obtenu grâce à la sélection. La variable prend le nom du dernier élément sélectionné.

<xproc value="..." | file="...">

Pour chaque utilisation d'un xproc, il faut indiquer la source du xml à traiter. Vous pouvez donner directement la source d'un fichier xml par l'attribut "file", soit le contenu d'une variable par l'attribut "value".

Variables XPROC

Des variables sont automatiquement générées pour chaque requête XPROC.

  • $xproc.content$ contenu du résultat courant
  • $xproc.name$ nom de la balise courante
  • $xproc.attributes$ récupère les attributs correspondant à la balise courante

  • $xprocrowcount$ : nombre de lignes
  • $xprocnumrow$ : numéro de la ligne en cours
  • $xproccolcount$ : nombre de colonnes (champs)

Les attributs sont transmis sous la forme nom1="valeur1" [nom2="valeur2"...] peuvent être à leur tour parsés en utilisant la balise get :

Exemple :

<get tag="$xproc.attributes$">

 

 

Exemple

Imaginons un fichier de données structuré ainsi :

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<body>
    <total_count>3</total_count>
    <orders>
        <order id="12">
            <commercial_id>000000374</commercial_id>
            <created_date>2018-06-20T12:50:06Z</created_date>
            <currency_iso_code>EUR</currency_iso_code>
            ...
        </order>
        <order id="25">
          ...
        </order>
        <order id="32">
          ...
        </order>
    </orders>
<body>

Le code pour lire ce fichier peut s'écrire ainsi :

<xproc select="/body/orders" file="fichier.xml">
    <!-- Boucle sur les "order" -->
    <set name="numOrd" value="0">
    <xproc value="$orders$">
       <set name="numOrd" expr="$numOrd$+1">
       <set name="orderCur" value="$xproc.content$">
       <!-- Boucle sur les champs du "order" courant -->
       <xproc value="$orderCur$">
          <get tag="$xproc.attributes$">
          <cond expr="$xproc.name$=created_date">
             <set name="NdateCreation" value="$xproc.content$">
          </cond>
        </xproc>
   </xproc>
</xproc>

Le select du premier xproc permet d'atteindre les objets "orders".

Le deuxième xproc reprend le contenu de orders (value) et boucle sur les élements de type order.

La balise <get tag..."> extrait les attributs de l'objet order (définira donc une variable id contenant l'attribut id de l'objet).

Le troisième xproc reprend le contenu du order courant et boucle sur les champs de celui-ci.

 

Télécharger

Téléchargez rapidement la dernière version du XPX: Version 3.8-rc16 - 05/02/2019

FAQ

Venez nous poser vos questions et voir les problèmes courants que vous pouvez rencontrer

Don

Aidez-nous à faire vivre ce site en faisant un don

Condition d'utilisation