4D inclut un ensemble de commandes permettant d'écrire et d’analyser des objets contenant des données XML (eXtensible Markup Language).
Le langage XML est une norme d’échange de données. Il est basé sur l’emploi de balises permettant de décrire de manière précise les données échangées ainsi que leur structure. Les fichiers XML sont des fichiers au format Texte, leur contenu est analysé (parsing) par les applications qui importent les données. Aujourd’hui, de nombreuses applications prennent en charge ce format.
Pour plus d’informations sur le XML, reportez-vous, par exemple, au site http://xmlfr.org.
Pour la prise en charge du XML, 4D utilise une librairie nommée Xerces.dll développée par la société Apache Foundation. 4D prend en charge XML version 1.0.
Note : 4D permet également d’importer et d’exporter directement des données au format XML à l’aide de l’éditeur d’import/export standard.
Les commandes de ce thème sont préfixées DOM. En effet, 4D propose deux ensembles distincts de commandes XML: les commandes DOM (Document Object Model) et SAX (Simple API XML), qui constituent deux modes d’analyse différents des documents XML.
- Le mode DOM effectue l’analyse d’une source XML et construit sa structure (son “arbre”) en mémoire. De ce fait, l’accès à chaque élément de la source est extrêmement rapide. Cependant, la totalité de l’arbre étant contenu dans la mémoire, le traitement de gros documents XML peut dépasser la capacité de la mémoire et provoquer des erreurs.
- Le mode SAX ne construit pas d’arbre en mémoire. Dans ce mode, des “événements” (tels que le début et la fin d’un élément) sont générés lors de l’analyse de la source. Ce mode autorise l’analyse de documents XML de toute taille, quelle que soit la quantité de mémoire disponible. Les commandes SAX sont regroupées dans le thème "XML SAX". Pour plus d'informations, reportez-vous à la section Présentation des commandes XML SAX.
Pour plus d’informations sur les standards XML, vous pouvez consulter les sites
http://www.saxproject.org/?selected=event et
http://www.w3schools.com/xml/.
Les objets créés, modifiés ou analysés par les commandes DOM de 4D peuvent être des textes, des URLs, des documents ou des BLOBs. Les commandes DOM utilisées pour l'ouverture des objets XML dans 4D sont DOM Analyser source XML et DOM Analyser variable XML.
De nombreuses commandes permettent ensuite de lire, d'analyser et d'écrire les éléments et les attributs. La récupération des erreurs s'effectue via la commande XML LIRE ERREUR (commune aux deux standards XML).
La commande DOM FERMER XML permet de finalement refermer la source.
Note sur l'usage de paramètres BLOBs XML : Les structures XML sont basées sur des données de type texte, il est recommandé de les manipuler via des variables ou des champs de type Texte. Pour des raisons historiques, les commandes XML de 4D (par exemple DOM Analyser variable XML) acceptent des paramètres de type BLOBs. En effet, dans les versions précédentes de 4D, la taille des variables de type Texte était limitée à 32 Ko. Depuis la version 11 de 4D, les variables et champs texte peuvent contenir jusqu’à 2 Go de données. La limitation d'origine étant supprimée, il est désormais fortement déconseillé de stocker des textes dans des BLOBs. L’usage de BLOBs est à réserver au traitement de données binaires. Par conformité aux spécifications du XML, à compter de 4D v12 les données binaires sont automatiquement encodées en Base64, même si le BLOB contient du texte.
Trois commandes XML DOM (DOM Creer element XML, DOM Chercher element XML et DOM ECRIRE VALEUR ELEMENT XML) acceptent la notation XPath pour l’accès aux éléments XML.
La notation XPath est issue du langage XPath, consacré à la navigation à l'intérieur des structures XML. Elle permet de désigner directement des éléments au sein d’une structure XML via une syntaxe du type "chemin d'accès", sans devoir nécessairement indiquer le chemin complet pour y parvenir. Soit par exemple la structure suivante :
<RootElement>
<Elem1>
<Elem2>
<Elem3 Font=Verdana Size=10> </Elem3>
</Elem2>
</Elem1>
</RootElement>
La notation XPath permet d’accéder à l’élément 3 via la syntaxe /RootElement/Elem1/Elem2/Elem3.
4D accepte également les éléments XPath indexés, avec la syntaxe Elément[NumElément]. Soit par exemple la structure suivante :
<RootElement>
<Elem1>
<Elem2>aaa</Elem2>
<Elem2>bbb</Elem2>
<Elem2>ccc</Elem2>
</Elem1>
</RootElement>
La notation XPath permet d’accéder à la valeur “ccc” via la syntaxe /RootElement/Elem1/Elem2[3].
Pour une illustration de la notation XPath, reportez-vous aux exemples des commandes DOM Creer element XML et DOM Chercher element XML.
Les jeux de caractères suivants sont pris en charge par les commandes XML DOM et XML SAX de 4D :
- ASCII
- UTF-8
- UTF-16 (Big/Small Endian)
- UCS4 (Big/Small Endian)
- EBCDIC code pages IBM037, IBM1047 and IBM1140 encodings,
- ISO-8859-1 (ou Latin1)
- Windows-1252.
Le langage XML utilise de nombreux termes et acronymes spécifiques. Cette liste non exhaustive explicite les principales notions XML utilisées par les commandes et fonctions de 4D.
Attribut : Sous-balise XML associée à un élément. Un attribut comporte toujours un nom et une valeur (cf. schéma ci-dessous).
Bien formé : Un document XML est déclaré “bien formé” par l’analyseur XML lorsqu’il est conforme aux spécifications XML génériques. Voir aussi Validation.
DTD : Document Type Declaration (Déclaration de type de document). La DTD recense l’ensemble des règles et des propriétés spécifiques que doit suivre un document XML. Ces règles définissent notamment le nom et le contenu de chaque balise ainsi que leur contexte. Cette formalisation des éléments permet de vérifier qu’un document XML est conforme (dans ce cas il est déclaré “valide”).
La DTD peut être incluse dans le document XML (DTD interne) ou dans un document tiers (DTD externe). A noter que la DTD n’est pas obligatoire.
Elément : Balise XML. Un élément comporte toujours un nom et une valeur. Facultativement, un élément peut contenir des attributs (cf. schéma).
![](../../picture/39679/pict39679.fr.png)
Enfant : Dans une structure XML, élément d’un niveau directement inférieur à un autre.
Frère : Dans une structure XML, élément du même niveau qu'un autre.
Parent : Dans une structure XML, élément d’un niveau directement supérieur à un autre.
Parsing, parser (Analyser, analyseur) : Action d’analyser le contenu d’un objet structuré afin d’en extraire les informations utiles. Les commandes du thème “XML” permettent d’analyser le contenu de tout objet XML.
Racine (Root) : Elément situé au premier niveau d’une structure XML.
RefElément : Référence XML utilisée par les commandes XML de 4D pour désigner une structure XML (documents ou élément). Cette référence est constituée de 8 caractères codés sous forme hexadécimale, ce qui signifie que sa longueur est de 16 ou 32 caractères selon que vous utilisez un système 32 ou 64 bits. Il est conseillé de déclarer les références XML à l'aide de la directive C_TEXTE.
Structure XML : objet XML structuré. Cet objet peut être un document, une variable, un élément.
Validation : Un document XML est “validé” par l’analyseur XML lorsqu’il est “bien formé” et conforme aux spécifications de la DTD. Voir aussi Bien formé.
XML : eXtensible Markup Language (Langage balisé évolutif). Norme d’échange de données informatisées permettant de transférer des données ainsi que leur structure. Le langage XML est basé sur l’emploi de balises et d’une syntaxe spécifiques, à l’instar du langage HTML. Toutefois, à la différence de ce dernier, le langage XML permet de définir des balises personnalisées.
XSL : eXtensible Stylesheet Language (Langage des feuilles de style évolutif). Langage permettant de définir des feuilles de style utilisables pour traiter et afficher le contenu d’un document XSL.
De nombreuses fonctions de ce thème retournent une référence d'élément XML. Si une erreur se produit durant l'exécution d'une fonction (par exemple si la référence de l’élément racine est invalide), la variable OK prend la valeur 0 et une erreur est générée.
De plus, la référence retournée dans ce cas est une suite de 16 caractères "0" ("0000000000000000").