ADELIA |
VADELIA |
SADELIA |
WADELIA |
EADELIA |
(I/B) |
(I/B) (C/S) |
(B) (S) |
(I/B) (C/S) |
(B) (C/S) |
Paragraphe d'utilisation
Tous.
Syntaxe
XML_CHARGER_LST NomIdentifiantXml cheminXPATH <nom liste> <zone liste>
ou
XML_CHARGER_LST NomIdentifiantXml cheminXPATH <nom liste> SuiteAttributVar
CheminXPATH |
→ |
CheminXPATHAdélia | <cste alpha> | &<variable alpha> |
SuiteAttributVar |
→ |
SuiteAttributVar, AttributVar | AttributVar |
AttributVar |
→ |
IdAttribut < zone liste> |
IdAttribut |
→ |
<nom attribut> | &<variable alpha> | *TEXTE | *NOM | *PREFNS |
Description
Rend dans une liste la valeur des attributs pour tous les noeuds correspondant au chemin XPATH indiqué.
La directive *TEXTE permet de récupérer la valeur du texte du noeud. Si seul le texte associé au noeud doit être récupéré, cette directive peut être omise.
*NOM permet de récupérer le nom local du nœud. Dans ce cas, la zone de la liste est forcément alphanumérique. Les variables associées aux valeurs doivent être des zones de la liste.
*PREFNS permet de récupérer le préfixe du noeud. Dans ce cas, la variable résultat est obligatoirement alphanumérique. *PREFNS retourne la valeur *BLANK si le noeud n'est pas préfixé.
Le chemin XPATH de sélection peut être indiqué sous la forme :
- d'un chemin XPATH Adélia,
- d'un chemin XPATH standard indiqué dans la constante alpha ou la variable alphanumérique.
Gestion des espaces de noms :
- un élément peut être lié à un espace de noms à condition d'être préfixé ou d'être dans la portée d'un espace de noms par défaut.
- un attribut peut être lié à un espace de noms uniquement s'il est préfixé.
Pour interroger un élément ou un attribut lié à un espace de noms, il faut, dans un premier temps, ajouter une définition de préfixe dans le contexte d'exécution courant à l'aide de l'ordre XML_AJOUTER_NS. Cet ordre permet en effet d'associer un préfixe à un espace de noms identifié par une Uri. Le préfixe est alors utilisé pour qualifier un nom d'élément ou d'attribut dans le chemin XPATH.
Exemples :
XML_AJOUTER_NS 'ha' 'urn:hardis:warehouse'
XML_CHARGER_LST xmlidf /ha:bookstore/ha:book lstbooks ha:auteur col_auteur, ha:titre col_titre, ha:genre col_genre
Après l'exécution de cet ordre, le mot réservé *CODE_RETOUR peut prendre les valeurs suivantes :
0 (*NORMAL) |
L'opération s'est bien déroulée. |
100 (*NON_TROUVE) |
Aucun noeud correspondant au chemin XPATH n'a été trouvé. |
1 |
Erreur : le chemin XPATH est invalide. |
10 |
Au moins un attribut ou texte demandé n'existe pas pour au moins un des noeuds sélectionnés. La zone de la liste est initialisée avec la valeur par défaut de son type. L'ordre s'exécute normalement pour les autres attributs et les autres noeuds. |
13 |
Erreur : l'identifiant XML n'est pas ouvert. |
-1 |
Erreur : pour au moins un attribut texte demandé, il y a eu un problème de conversion de type entre la valeur récupérée et la variable indiquée. Le contenu de la liste est indéterminé. |
27 |
Uri de l'espace de noms non trouvée. |
Par exemple
LISTE Listetxt WTEXTE
LISTE ListeXml Var_attrib1 Var_attrib2 Var_texte
...
XML_CHARGER_LST xml1 /ElemRoot/ElemTab ListeTxt WTEXTE
XML_CHARGER_LST xml1 /ElemRoot/ElemTab ListeXml attrib1 Var_attrib1, attrib2 Var_attrib2, *TEXTE Var_texte
LISTE ListeXml Var_attrib1 Var_attrib2 Var_texte
ALPHA(15) NomAttr1
ALPHA(15) NomAttr2
NomAttr1 = 'attrib1'
NomAttr2 = 'attrib2'
XML_CHARGER_LST xml1 /ElemRoot/ElemTab ListeXml &NomAttr1 Var_attrib1, &NomAttr2 Var_attrib2, *TEXTE Var_texte
* récupération d'attributs préfixés et du préfixe du nœud courant
XML_AJOUTER_NS xml1 'zz' 'urn:xmlns:25hoursaday-com:bookstore'
XML_CHARGER_LST xml1 /zz:book/zz:bookstore ListeXml zz:attrib1 Var_attrib1, zz:attrib2 Var_attrib2, *PREFNS Var_texte