POUR CHAQUE COR-XML
BUT
Cette instruction permet de parcourir une liste de balises (identifiées par la fonction XML-LECCOR) et d’initialiser le contexte d’actions DIAPASON (contexte ENR-ACT-ENT) paramétrées dans la correspondance rattachée.
Il se présente sous la forme d’un bloc de parcours itératif de chaque balise de départ, avec la possibilité d’intervenir sur le résultat de l’initialisation du contexte d’action de chaque itération.
Ce mot clé est disponible uniquement dans les requêtes de type REB.
SYNTAXE
PARAMETRES
Paramètre | E/S | O | Type | Description |
REF-MESSAGE-XML | E | Oui | Caractère | Référence Message XML mémorisé dans la structure WfEIAXmlMes : cette structure contient le contenu du message XML dans un format lisible par DIAPASON. Cette structure a été pré-initialisée avant l’exécution de la requête (requêtes REB contextuelles dans le cas de l’EIA) ou est initialisée avec la fonction XML-LECMES : l’initialisation permet de renseigner ou non une référence de message (utile uniquement dans le cas où il faut lire simultanément plusieurs messages). La valeur peut être MESSAGE-COURANT (cas où un seul message a été initialisé) ou bien peut être définie par une variable locale, une constante (locale ou globale) ou une variable contextuelle. |
CLE-CORRESP | E | Oui | Caractère | Clé permettant d’identifier les différentes balises rencontrées dans le message qui sont le point de départ de la correspondance définie par les 3 paramètres précédents. Cette clé est utilisée dans l’instruction Pour Chaque Correspondance. La clé peut être définie par une variable locale, une constante (locale ou globale) ou une variable contextuelle. |
ERREUR | E | Oui | Caractère | Code retour sur chaque balise retrouvée |
EXEMPLE
Soit un modèle XML Message_Articles dont la version défaut dispose de la structure suivante :
<Maj_Articles>
…
<Panier_Articles>
<Article>
<Ref>…
…
</Article>
</Panier_Articles>
…
</Maj_Articles>
Une correspondance référencée Article a été définie sur ce modèle et correspond à l’entité article dont le point de départ est la balise <Article>.
Soit le message XML courant suivant :
<Maj_Articles>
…
<Panier_Articles>
<Article>
<Ref>A</Ref>
…
</Article>
<Article>
<Ref>B</Ref>
…
</Article>
<Article>
<Ref>C</Ref>
…
</Article>
</Panier_Articles>
…
</Maj_Articles>
Soit le contenu d’une requête qui se présente sous la forme :
…
VLO.Fonction = XML-LECCOR( REF-MESSAGE-XML= MESSAGE-COURANT , MODELE-XML= CLO."Message_Articles" , VERSION-MOD-XML= VERSION-DEFAUT , CORRESP-MOD-XML= CLO."Article" , CLE-CORRESP= CLO."Article" )
SI VLO.Fonction = CLO. ""
…
POUR CHAQUE COR-XML DE LA REF-MESSAGE-XML= MESSAGE-COURANT ET CLE-CORRESP= CLO."Article" AVEC ERREUR= VLO.Erreur :
…
VLO.Nombre = VLO.Nombre + CLO.1
…
FIN_BLOC
FIN_BLOC
Le principe de fonctionnement des instructions suivantes sur ce message donnée en exemple est le suivant :
La première instruction est l’utilisation de la fonction XML-LECCOR. Elle va permettre de repérer toutes les balises de départs de la correspondance Article recherchée : DIAPASON mémorise une liste interne des balises de départs qui répondent à la correspondance et rattachées à la clé de correspondance « Article », soit dans notre exemple, les balises B1, B2 et B3.
Si le message XML
L’instruction POUR CHAQUE COR-XML parcours les différentes balises identifiées par la clé « Article » et exécute la correspondance effective pour chaque itération (il y a 3 itérations):
- DIAPASON exécute la correspondance sur la balise B1 ; si la correspondance ne se passe pas bien, la variable VLO.Erreur sera non vide ; sinon, le contexte de ENR-ACT-ENT défini dans la correspondance sera effectivement initialisé : dans notre exemple, WfEntAct contient une action de mise à jour sur la fiche article (clé A) et WfEntVar contient les valeurs des variables rattachées.
- DIAPASON exécute les instructions dans la boucle ; par exemple la variable VLO.Nombre est égale à 1 ; les structures WfEntAct et WfEntVar peuvent être manipulées et utilisées (ENR-ACT-ENT par exemple).
- DIAPASON exécute la correspondance sur la balise B2 ; si la correspondance ne se passe pas bien, la variable VLO.Erreur sera non vide ; sinon, le contexte de ENR-ACT-ENT défini dans la correspondance sera effectivement initialisé : dans notre exemple, WfEntAct contient une action de mise à jour sur la fiche article (clé B) et WfEntVar contient les valeurs des variables rattachées. Les actions sont cumulées avec l’itération précédente (si ces listes ne sont pas effacées lors de chaque itération).
- DIAPASON exécute les instructions dans la boucle ; par exemple la variable VLO.Nombre est égale à 2 ; les structures WfEntAct et WfEntVar peuvent être manipulées et utilisées (ENR-ACT-ENT par exemple).
- DIAPASON exécute la correspondance sur la balise B3 ; si la correspondance ne se passe pas bien, la variable VLO.Erreur sera non vide ; sinon, le contexte de ENR-ACT-ENT défini dans la correspondance sera effectivement initialisé : dans notre exemple, WfEntAct contient une action de mise à jour sur la fiche article (clé C) et WfEntVar contient les valeurs des variables rattachées. Les actions sont cumulées avec l’itération précédente (si ces listes ne sont pas effacées lors de chaque itération).
- DIAPASON exécute les instructions dans la boucle ; par exemple la variable VLO.Nombre est égale à 3 ; les structures WfEntAct et WfEntVar peuvent être manipulées et utilisées (ENR-ACT-ENT par exemple).
- DIAPASON sort de la boucle POUR CHAQUE COR-XML.
NOTES
Avant l’exécution de cette instruction, il faut avoir utilisé la fonction XML-LECCOR pour initialiser sont contexte d’exécution.
Le principe de cette instruction est également de considérer l’imbrication des correspondances les unes à l’intérieur des autres (voir exemple).
Si aucune itération n’est effectuée (car aucune correspondance), la variable locale définie dans le paramètre de l’instruction ERREUR contient « *PAS-DE-COR-XML Pas de correspondances XML ».