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é.
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".
Des variables sont automatiquement générées pour chaque requête XPROC.
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$">
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échargez rapidement la dernière version du XPX: Version 3.8-rc16 - 05/02/2019
Venez nous poser vos questions et voir les problèmes courants que vous pouvez rencontrer
Aidez-nous à faire vivre ce site en faisant un don