version 11.3 (Modifiée)
4D inclut un ensemble de commandes permettant d'écrire et d'analyser des objets contenant des données XML (eXtensible Markup Language).
A propos du langage XML
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.
DOM et SAX
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/.
Création, ouverture et fermeture des documents XML via DOM
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 LIRE ERREUR XML (commune aux deux standards XML).
La commande DOM FERMER XML permet de finalement refermer la source.
Utilisation de la notation XPath
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.
Terminologie
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).
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 qu'elle est composée de 16 caractères.
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.