Le langage XML ( Extensible Markup Language ) est un langage de balisage et un format de fichier permettant de stocker, de transmettre et de reconstruire des données arbitraires...
Les objectifs de conception du XML mettent l'accent sur la simplicité, la généralité et la facilité d'utilisation sur Internet . Il s'agit d'un format de données textuelles avec un support solide via Unicode pour différentes langues humaines . Bien que la conception du XML se concentre sur les documents, le langage est largement utilisé pour la représentation de structures de données arbitraires , telles que celles utilisées dans les services Web .
Il existe plusieurs systèmes de schémas pour aider à la définition des langages basés sur XML, tandis que les programmeurs ont développé de nombreuses interfaces de programmation d'applications (API) pour faciliter le traitement des données XML.
Aperçu
L'objectif principal du XML est la sérialisation , c'est-à-dire le stockage, la transmission et la reconstruction de données arbitraires. Pour que deux systèmes disparates puissent échanger des informations, ils doivent s'accorder sur un format de fichier. Le XML standardise ce processus. Il est donc analogue à une lingua franca pour représenter des informations.
En tant que langage de balisage , XML étiquette, catégorise et organise structurellement les informations. Les balises XML représentent la structure des données et contiennent des métadonnées . Ce qui se trouve à l'intérieur des balises sont des données, codées de la manière spécifiée par la norme XML. Un schéma XML supplémentaire (XSD) définit les métadonnées nécessaires à l'interprétation et à la validation du XML. (Ceci est également appelé schéma canonique.) Un document XML qui adhère aux règles XML de base est « bien formé » ; un document qui adhère à son schéma est « valide ».
La RFC 7303 de l'IETF (qui remplace la RFC 3023 plus ancienne) fournit des règles pour la construction de types de médias à utiliser dans les messages XML. Elle définit trois types de médias : application/xml( text/xmlest un alias), application/xml-external-parsed-entity( text/xml-external-parsed-entityest un alias) et application/xml-dtd. Ils sont utilisés pour transmettre des fichiers XML bruts sans exposer leur sémantique interne . La RFC 7303 recommande en outre que les langages basés sur XML se voient attribuer des types de médias se terminant par +xml, par exemple, image/svg+xmlpour SVG .
D'autres directives pour l'utilisation de XML dans un contexte réseau apparaissent dans la RFC 3470, également connue sous le nom d'IETF BCP 70, un document couvrant de nombreux aspects de la conception et du déploiement d'un langage basé sur XML.
L’une des applications du XML est le transfert d’informations de météorologie opérationnelle (OPMET) basées sur les normes IWXXM .
Terminologie clé
Les informations contenues dans cette section sont basées sur la spécification XML . Il ne s'agit pas d'une liste exhaustive de toutes les constructions qui apparaissent dans XML ; elle fournit une introduction aux constructions clés les plus souvent rencontrées dans l'utilisation quotidienne.
Personnage
Un document XML est une chaîne de caractères . Tous les caractères Unicode légaux (à l'exception de Null) peuvent apparaître dans un document XML (1.1) (bien que certains soient déconseillés).
Processeur et application
Le processeur analyse le balisage et transmet des informations structurées à une application . La spécification impose des exigences sur ce qu'un processeur XML doit faire et ne pas faire, mais l'application est hors de son champ d'application. Le processeur (comme l'appelle la spécification) est souvent appelé familièrement un analyseur XML .
Balisage et contenu
Les caractères qui composent un document XML sont divisés en balisage et contenu , qui peuvent être distingués par l'application de règles syntaxiques simples . En général, les chaînes qui constituent le balisage commencent soit par le caractère <et se terminent par un >, soit par le caractère &et se terminent par un ;. Les chaînes de caractères qui ne sont pas du balisage sont du contenu. Cependant, dans une section CDATA , les délimiteurs <![CDATA[et ]]>sont classés comme balisage, tandis que le texte entre eux est classé comme contenu. De plus, les espaces avant et après l'élément le plus externe sont classés comme balisage.
Étiqueter
Une balise est une construction de balisage qui commence par <et se termine par >. Il existe trois types de balises :
balise de début , telle que <section>;
balise de fin , telle que </section>;
balise d'élément vide , telle que <line-break />.
Élément
Un élément est un composant logique d'un document qui commence par une balise de début et se termine par une balise de fin correspondante ou qui est constitué uniquement d'une balise d'élément vide. Les caractères entre la balise de début et la balise de fin, le cas échéant, constituent le contenu de l'élément et peuvent contenir du balisage, y compris d'autres éléments, appelés éléments enfants . Un exemple est <greeting>Hello, world!</greeting>. Un autre est <line-break />.
Attribut
Un attribut est une construction de balisage composée d'une paire nom–valeur qui existe dans une balise de début ou une balise d'élément vide. Un exemple est <img src="madonna.jpg" alt="Madonna" />, où les noms des attributs sont "src" et "alt", et leurs valeurs sont respectivement "madonna.jpg" et "Madonna". Un autre exemple est <step number="3">Connect A to B.</step>, où le nom de l'attribut est "number" et sa valeur est "3". Un attribut XML ne peut avoir qu'une seule valeur et chaque attribut ne peut apparaître qu'une seule fois sur chaque élément. Dans la situation courante où une liste de valeurs multiples est souhaitée, cela doit être fait en codant la liste dans un attribut XML bien formé avec un format au-delà de ce que XML définit lui-même. Il s'agit généralement d'une liste délimitée par des virgules ou des points-virgules ou, si les valeurs individuelles ne contiennent pas d'espaces, une liste délimitée par des espaces peut être utilisée. <div class="inner greeting-box">Welcome!</div>, où l'attribut "class" a à la fois la valeur "inner greeting-box" et indique également les deux noms de classe CSS "inner" et "greeting-box".
Déclaration XML
Les documents XML peuvent commencer par une déclaration XML qui décrit certaines informations les concernant. Un exemple est <?xml version="1.0" encoding="UTF-8"?>.
Personnages et évasion
Les documents XML sont entièrement constitués de caractères issus du répertoire Unicode . À l'exception d'un petit nombre de caractères de contrôle spécifiquement exclus , tout caractère défini par Unicode peut apparaître dans le contenu d'un document XML.
XML inclut des fonctionnalités permettant d'identifier le codage des caractères Unicode qui composent le document et d'exprimer les caractères qui, pour une raison ou une autre, ne peuvent pas être utilisés directement.
Caractères valides
Les points de code Unicode dans les plages suivantes sont valides dans les documents XML 1.0 :
U+0009 (tabulation horizontale), U+000A (saut de ligne), U+000D (retour chariot) : ce sont les seuls contrôles C0 acceptés dans XML 1.0 ;
U+0020–U+D7FF, U+E000–U+FFFD : ceci exclut certains non-caractères dans le BMP (tous les substituts, U+FFFE et U+FFFF sont interdits) ;
U+10000–U+10FFFF : cela inclut tous les points de code dans les plans supplémentaires, y compris les non-caractères.
XML 1.1 étend l'ensemble des caractères autorisés pour inclure tous les caractères ci-dessus, plus les caractères restants dans la plage U+0001–U+001F. Cependant, il restreint en même temps l'utilisation des caractères de contrôle C0 et C1 autres que U+0009 (tabulation horizontale), U+000A (saut de ligne), U+000D (retour chariot) et U+0085 (ligne suivante) en exigeant qu'ils soient écrits sous forme d'échappement (par exemple, U+0001 doit être écrit comme ou son équivalent). Dans le cas des caractères C1, cette restriction est une incompatibilité ascendante ; elle a été introduite pour permettre la détection des erreurs d'encodage courantes.
Le point de code U+0000 (Null) est le seul caractère qui n'est autorisé dans aucun document XML 1.1.
Détection d'encodage
Le jeu de caractères Unicode peut être codé en octets pour le stockage ou la transmission de différentes manières, appelées « codages ». Unicode lui-même définit des codages qui couvrent l'ensemble du répertoire ; les plus connus sont UTF-8 (que la norme XML recommande d'utiliser, sans BOM ) et UTF-16 . Il existe de nombreux autres codages de texte antérieurs à Unicode, tels que l'ASCII et divers ISO/IEC 8859 ; leurs répertoires de caractères sont dans tous les cas des sous-ensembles du jeu de caractères Unicode.
XML permet l'utilisation de n'importe lequel des codages définis par Unicode et de tout autre codage dont les caractères apparaissent également dans Unicode. XML fournit également un mécanisme par lequel un processeur XML peut déterminer de manière fiable, sans aucune connaissance préalable, quel codage est utilisé. Les codages autres que UTF-8 et UTF-16 ne sont pas nécessairement reconnus par tous les analyseurs XML (et dans certains cas même pas UTF-16, même si la norme exige qu'il soit également reconnu).
S'échapper
XML fournit des fonctions d'échappement pour inclure des caractères qui sont difficiles à inclure directement. Par exemple :
Les caractères « < » et « & » sont des marqueurs de syntaxe clés et ne peuvent jamais apparaître dans un contenu en dehors d'une section CDATA . Il est autorisé, mais non recommandé, d'utiliser « < » dans les valeurs d'entité XML.
Certains codages de caractères ne prennent en charge qu'un sous-ensemble d'Unicode. Par exemple, il est légal de coder un document XML en ASCII, mais ASCII ne dispose pas de points de code pour les caractères Unicode tels que « é ».
Il n'est peut-être pas possible de saisir le caractère sur la machine de l'auteur.
Tous les caractères Unicode autorisés peuvent être représentés par une référence de caractère numérique . Prenons l'exemple du caractère chinois « 中 », dont le code numérique en Unicode est hexadécimal 4E2D ou décimal 20,013. Un utilisateur dont le clavier ne propose aucune méthode pour saisir ce caractère pourrait néanmoins l'insérer dans un document XML codé comme 中ou 中. De même, la chaîne « I <3 Jörg » pourrait être codée pour être incluse dans un document XML comme I <3 Jörg.
�n'est pas autorisé car le caractère nul est l'un des caractères de contrôle exclus de XML, même lors de l'utilisation d'une référence de caractère numérique. Un mécanisme de codage alternatif tel que Base64 est nécessaire pour représenter ces caractères.
Commentaires
Les commentaires peuvent apparaître n'importe où dans un document en dehors d'un autre balisage. Les commentaires ne peuvent pas apparaître avant la déclaration XML. Les commentaires commencent par <!--et se terminent par -->. Pour des raisons de compatibilité avec SGML , la chaîne "--" (double trait d'union) n'est pas autorisée dans les commentaires ; cela signifie que les commentaires ne peuvent pas être imbriqués. L'esperluette n'a pas de signification particulière dans les commentaires, donc les références d'entité et de caractère ne sont pas reconnues comme telles, et il n'y a aucun moyen de représenter des caractères en dehors du jeu de caractères du codage du document.
Un exemple de commentaire valide : <!--no need to escape <code> & such in comments-->
Utilisation internationale
XML 1.0 (cinquième édition) et XML 1.1 prennent en charge l'utilisation directe de presque tous les caractères Unicode dans les noms d'éléments, les attributs, les commentaires, les données de caractères et les instructions de traitement (autres que ceux qui ont une signification symbolique particulière dans XML lui-même, comme le signe inférieur à, « < »). Le document XML suivant est bien formé, comprenant des caractères chinois , arméniens et cyrilliques :
La spécification XML définit un document XML comme un texte bien formé , ce qui signifie qu'il satisfait à une liste de règles de syntaxe fournies dans la spécification. Parmi les points clés de cette liste assez longue, on peut citer :
Le document contient uniquement des caractères Unicode légaux correctement codés.
Aucun des caractères de syntaxe spéciale tels que <et &n'apparaît, sauf lors de l'exécution de leur rôle de délimitation de balisage.
La balise de début, la balise de fin et la balise d'élément vide qui délimitent les éléments sont correctement imbriquées, aucune ne manquant ni ne se chevauchant.
Les noms de balises sont sensibles à la casse ; la balise de début et la balise de fin doivent correspondre exactement.
Les noms de balises ne peuvent contenir aucun des caractères !"#$%&'()*+,/;<=>?@[\]^`{|}~, ni un espace, et ne peuvent pas commencer par « - », « . » ou un chiffre numérique.
Un seul élément racine contient tous les autres éléments.
La définition d'un document XML exclut les textes qui contiennent des violations des règles de bonne formation ; ils ne sont tout simplement pas XML. Un processeur XML qui rencontre une telle violation est tenu de signaler ces erreurs et de cesser le traitement normal. Cette politique, parfois appelée « gestion draconienne des erreurs », contraste de manière notable avec le comportement des programmes qui traitent le HTML , qui sont conçus pour produire un résultat raisonnable même en présence d'erreurs de balisage graves. La politique XML dans ce domaine a été critiquée comme une violation de la loi de Postel (« Soyez conservateur dans ce que vous envoyez ; soyez libéral dans ce que vous acceptez »).
En plus d'être bien formé, un document XML peut être valide . Cela signifie qu'il contient une référence à une définition de type de document (DTD) et que ses éléments et attributs sont déclarés dans cette DTD et suivent les règles grammaticales qui leur sont propres spécifiées par la DTD.
Les processeurs XML sont classés comme validants ou non validants selon qu'ils vérifient ou non la validité des documents XML. Un processeur qui découvre une erreur de validité doit pouvoir la signaler, mais peut poursuivre le traitement normal.
Une DTD est un exemple de schéma ou de grammaire . Depuis la publication initiale de XML 1.0, des travaux considérables ont été réalisés dans le domaine des langages de schéma pour XML. Ces langages de schéma définissent généralement l'ensemble des éléments qui peuvent être utilisés dans un document, les attributs qui peuvent leur être appliqués, l'ordre dans lequel ils peuvent apparaître et les relations parent/enfant autorisées.
Les DTD définissent un type de document plutôt que les types utilisés par un espace de noms, regroupant ainsi toutes les contraintes d'un document dans une seule collection.
Elles manquent d'expressivité. Les DTD XML sont plus simples que les DTD SGML et certaines structures ne peuvent pas être exprimées avec des grammaires classiques. Les DTD ne prennent en charge que les types de données rudimentaires.
Elles manquent de lisibilité. Les concepteurs de DTD font généralement un usage intensif d'entités de paramètres (qui se comportent essentiellement comme des macros textuelles ), ce qui facilite la définition de grammaires complexes, mais au détriment de la clarté.
Elles utilisent une syntaxe basée sur la syntaxe des expressions régulières , héritée de SGML, pour décrire le schéma. Les API XML classiques telles que SAX ne tentent pas d'offrir aux applications une représentation structurée de la syntaxe, elle est donc moins accessible aux programmeurs qu'une syntaxe basée sur les éléments.
Deux caractéristiques particulières qui distinguent les DTD des autres types de schémas sont la prise en charge syntaxique de l'intégration d'une DTD dans des documents XML et la définition d'entités , qui sont des fragments arbitraires de texte ou de balisage que le processeur XML insère dans la DTD elle-même et dans le document XML partout où ils sont référencés, comme les échappements de caractères.
La technologie DTD est encore utilisée dans de nombreuses applications en raison de son omniprésence.
Schéma
Un langage de schéma plus récent, décrit par le W3C comme le successeur des DTD, est XML Schema , souvent désigné par l' acronyme des instances de schéma XML, XSD (XML Schema Definition). Les XSD sont bien plus puissants que les DTD pour décrire les langages XML. Ils utilisent un système de typage de données riche et permettent des contraintes plus détaillées sur la structure logique d'un document XML. Les XSD utilisent également un format basé sur XML, ce qui permet d'utiliser des outils XML ordinaires pour faciliter leur traitement.
RELAX NG (Regular Language for XML Next Generation) a été initialement spécifié par OASIS et est désormais une norme (Partie 2 : Validation basée sur la grammaire régulière de la norme ISO/IEC 19757 – DSDL ). Les schémas RELAX NG peuvent être écrits soit dans une syntaxe basée sur XML, soit dans une syntaxe non XML plus compacte ; les deux syntaxes sont isomorphes et l'outil de conversion de James Clark , Trang, peut convertir l'une de l'autre sans perte d'informations. RELAX NG dispose d'un cadre de définition et de validation plus simple que XML Schema, ce qui le rend plus facile à utiliser et à mettre en œuvre. Il a également la capacité d'utiliser des plug-ins de cadre de types de données ; un auteur de schéma RELAX NG, par exemple, peut exiger que les valeurs d'un document XML soient conformes aux définitions des types de données de schéma XML.
Schématron
Schematron est un langage permettant de formuler des assertions sur la présence ou l'absence de motifs dans un document XML. Il utilise généralement des expressions XPath . Schematron est désormais une norme (Partie 3 : Validation basée sur des règles de la norme ISO/IEC 19757 – DSDL ).
DSDL et autres langages de schéma
DSDL (Document Schema Definition Languages) est une norme ISO/IEC (ISO/IEC 19757) en plusieurs parties qui rassemble un ensemble complet de petits langages de schéma, chacun ciblant des problèmes spécifiques. DSDL comprend la syntaxe complète et compacte RELAX NG , le langage d'assertion Schematron et des langages pour définir les types de données, les contraintes de répertoire de caractères, le renommage et l'expansion des entités, et le routage basé sur l'espace de noms des fragments de documents vers différents validateurs. Les langages de schéma DSDL ne bénéficient pas encore du support des schémas XML et constituent dans une certaine mesure une réaction populaire des éditeurs industriels au manque d'utilité des schémas XML pour la publication .
Certains langages de schéma décrivent non seulement la structure d'un format XML particulier, mais offrent également des fonctionnalités limitées pour influencer le traitement des fichiers XML individuels conformes à ce format. Les DTD et XSD ont tous deux cette capacité ; ils peuvent par exemple fournir la fonction d'augmentation de l'infoset et les valeurs par défaut des attributs. RELAX NG et Schematron ne les fournissent pas intentionnellement.
Spécifications connexes
Un ensemble de spécifications étroitement liées à XML a été développé peu après la publication initiale de XML 1.0. Il arrive fréquemment que le terme « XML » soit utilisé pour désigner XML ainsi qu'une ou plusieurs de ces autres technologies qui sont désormais considérées comme faisant partie du noyau XML.
Les espaces de noms XML permettent au même document de contenir des éléments et des attributs XML issus de vocabulaires différents, sans qu'il y ait de conflit de noms . Bien que les espaces de noms XML ne fassent pas partie de la spécification XML elle-même, pratiquement tous les logiciels XML prennent également en charge les espaces de noms XML.
XML Base définit l' xml:baseattribut, qui peut être utilisé pour définir la base de résolution des références URI relatives dans le cadre d'un seul élément XML.
XML Information Set ou XML Infoset est un modèle de données abstrait pour les documents XML en termes d' éléments d'information . L'infoset est couramment utilisé dans les spécifications des langages XML, pour faciliter la description des contraintes sur les constructions XML autorisées par ces langages.
XSL (Extensible Stylesheet Language) est une famille de langages utilisés pour transformer et restituer des documents XML, divisée en trois parties :
XSLT (XSL Transformations), un langage XML permettant de transformer des documents XML en d'autres documents XML ou en d'autres formats tels que HTML, texte brut ou XSL-FO. XSLT est étroitement associé à XPath, qu'il utilise pour traiter les composants du document XML d'entrée, principalement les éléments et les attributs.
XSL-FO (XSL Formatting Objects), un langage XML pour le rendu de documents XML, souvent utilisé pour générer des PDF.
XPath (XML Path Language), un langage non XML permettant d'adresser les composants (éléments, attributs, etc.) d'un document XML. XPath est largement utilisé dans d'autres spécifications XML de base et dans les bibliothèques de programmation pour accéder aux données codées en XML.
XQuery (XML Query) est un langage de requête XML fortement ancré dans XPath et XML Schema. Il fournit des méthodes pour accéder, manipuler et renvoyer du XML, et est principalement conçu comme un langage de requête pour les bases de données XML .
Le modèle XML (Partie 11 : Association de schémas de l'ISO/IEC 19757 – DSDL ) définit un moyen d'associer n'importe quel document XML à l'un des types de schémas mentionnés ci-dessus.
D'autres spécifications conçues dans le cadre du « XML Core » n'ont pas réussi à trouver une large adoption, notamment XInclude , XLink et XPointer .
Interfaces de programmation
Les objectifs de conception de XML incluent : « Il doit être facile d'écrire des programmes qui traitent des documents XML. » Malgré cela, la spécification XML ne contient presque aucune information sur la façon dont les programmeurs peuvent procéder à ce traitement. La spécification XML Infoset fournit un vocabulaire pour faire référence aux constructions dans un document XML, mais ne fournit aucune indication sur la façon d'accéder à ces informations. Une variété d' API pour accéder à XML ont été développées et utilisées, et certaines ont été standardisées.
Les API existantes pour le traitement XML ont tendance à appartenir à ces catégories :
API orientées flux accessibles depuis un langage de programmation, par exemple SAX et StAX .
API de parcours d'arbres accessibles à partir d'un langage de programmation, par exemple DOM .
Liaison de données XML , qui fournit une traduction automatique entre un document XML et des objets de langage de programmation.
Langages de transformation déclarative tels que XSLT et XQuery .
Extensions de syntaxe aux langages de programmation à usage général, par exemple LINQ et Scala .
Les fonctions orientées flux nécessitent moins de mémoire et, pour certaines tâches basées sur une traversée linéaire d'un document XML, sont plus rapides et plus simples que d'autres alternatives. Les API de traversée d'arbre et de liaison de données nécessitent généralement l'utilisation de beaucoup plus de mémoire, mais sont souvent jugées plus pratiques à utiliser par les programmeurs ; certaines incluent la récupération déclarative des composants du document via l'utilisation d'expressions XPath.
XSLT est conçu pour la description déclarative des transformations de documents XML et a été largement implémenté à la fois dans les packages côté serveur et dans les navigateurs Web. XQuery chevauche XSLT dans ses fonctionnalités, mais est davantage conçu pour la recherche dans de grandes bases de données XML .
API simple pour XML
Simple API for XML (SAX) est une API lexicale pilotée par événements dans laquelle un document est lu en série et son contenu est signalé sous forme de rappels à diverses méthodes sur un objet gestionnaire conçu par l'utilisateur. SAX est rapide et efficace à mettre en œuvre, mais difficile à utiliser pour extraire des informations au hasard du XML, car il a tendance à surcharger l'auteur de l'application en lui demandant de suivre la partie du document en cours de traitement. Il est mieux adapté aux situations dans lesquelles certains types d'informations sont toujours traités de la même manière, peu importe où ils apparaissent dans le document.
Analyse par tirage
L'analyse par tirage traite le document comme une série d'éléments lus en séquence à l'aide du modèle de conception d'itérateur . Cela permet d'écrire des analyseurs de descente récursive dans lesquels la structure du code effectuant l'analyse reflète la structure du XML analysé, et les résultats analysés intermédiaires peuvent être utilisés et consultés en tant que variables locales dans les fonctions effectuant l'analyse, ou transmis (en tant que paramètres de fonction) dans des fonctions de niveau inférieur, ou renvoyés (en tant que valeurs de retour de fonction) à des fonctions de niveau supérieur. Les exemples d'analyseurs par tirage incluent Data::Edit::Xml en Perl , StAX dans le langage de programmation Java , XMLPullParser en Smalltalk , XMLReader en PHP , ElementTree.iterparse en Python , SmartXML en Red , System.Xml.XmlReader dans le .NET Framework et l'API de traversée DOM (NodeIterator et TreeWalker).
Un analyseur pull crée un itérateur qui visite séquentiellement les différents éléments, attributs et données d'un document XML. Le code qui utilise cet itérateur peut tester l'élément actuel (pour savoir, par exemple, s'il s'agit d'une balise de début ou de fin, ou d'un texte), et inspecter ses attributs (nom local, espace de noms , valeurs des attributs XML, valeur du texte, etc.), et peut également déplacer l'itérateur vers l'élément suivant. Le code peut ainsi extraire des informations du document au fur et à mesure qu'il le parcourt. L'approche de descente récursive tend à se prêter à la conservation des données sous forme de variables locales typées dans le code effectuant l'analyse, tandis que SAX, par exemple, nécessite généralement qu'un analyseur gère manuellement les données intermédiaires dans une pile d'éléments qui sont des éléments parents de l'élément analysé. Le code d'analyse pull peut être plus simple à comprendre et à maintenir que le code d'analyse SAX.
Modèle d'objet de document
Le modèle d'objet de document (DOM) est une API qui permet de naviguer dans l'ensemble du document comme s'il s'agissait d'une arborescence d' objets de nœud représentant le contenu du document. Un document DOM peut être créé par un analyseur ou généré manuellement par les utilisateurs (avec des limitations). Les types de données dans les nœuds DOM sont abstraits ; les implémentations fournissent leurs propres liaisons spécifiques au langage de programmation . Les implémentations DOM ont tendance à être gourmandes en mémoire , car elles nécessitent généralement que l'intégralité du document soit chargée en mémoire et construite sous forme d'arborescence d'objets avant que l'accès ne soit autorisé.
Liaison de données
La liaison de données XML est une technique permettant de simplifier le développement d'applications qui doivent travailler avec des documents XML. Elle consiste à mapper le document XML à une hiérarchie d'objets fortement typés, plutôt qu'à utiliser les objets génériques créés par un analyseur DOM. Le code obtenu est souvent plus facile à lire et à maintenir, et il peut aider à identifier les problèmes au moment de la compilation plutôt qu'au moment de l'exécution. La liaison de données XML est particulièrement adaptée aux applications où la structure du document est connue et fixée au moment de l'écriture de l'application. En créant une représentation fortement typée des données XML, les développeurs peuvent tirer parti des environnements de développement intégrés (IDE) modernes qui offrent des fonctionnalités telles que la saisie semi-automatique, la refactorisation de code et la mise en surbrillance de code. Cela peut faciliter l'écriture de code correct et efficace, et réduire le risque d'erreurs et de bogues. Parmi les exemples de systèmes de liaison de données, citons Java Architecture for XML Binding (JAXB), XML Serialization in .NET Framework , et XML serialization in gSOAP .
XML comme type de données
XML est apparu comme un type de données de première classe dans d'autres langages. L' extension ECMAScript for XML (E4X) au langage ECMAScript /JavaScript définit explicitement deux objets spécifiques (XML et XMLList) pour JavaScript, qui prennent en charge les nœuds de document XML et les listes de nœuds XML en tant qu'objets distincts et utilisent une notation par points spécifiant les relations parent-enfant. E4X est pris en charge par les navigateurs Mozilla 2.5+ (bien que désormais obsolète) et Adobe Actionscript mais n'a pas été largement adopté. Des notations similaires sont utilisées dans l'implémentation LINQ de Microsoft pour Microsoft .NET 3.5 et supérieur, et dans Scala (qui utilise la machine virtuelle Java). L'application open source xmlsh, qui fournit un shell de type Linux avec des fonctionnalités spéciales pour la manipulation XML, traite de la même manière XML comme un type de données, en utilisant la notation <[ ]>. Le Resource Description Framework définit un type de données rdf:XMLLiteralpour contenir du XML canonique enveloppé . Facebook a produit des extensions aux langages PHP et JavaScript qui ajoutent XML à la syntaxe de base de manière similaire à E4X, à savoir respectivement XHP et JSX .
Histoire
XML est un profil d'application de SGML (ISO 8879).
La polyvalence du langage SGML pour l'affichage dynamique des informations a été comprise par les premiers éditeurs de médias numériques à la fin des années 1980, avant l'essor d'Internet. Au milieu des années 1990, certains praticiens du langage SGML avaient acquis de l'expérience avec le tout nouveau World Wide Web et pensaient que le langage SGML offrait des solutions à certains des problèmes auxquels le Web était susceptible de faire face au fur et à mesure de sa croissance. Dan Connolly a ajouté le langage SGML à la liste des activités du W3C lorsqu'il a rejoint l'équipe en 1995 ; les travaux ont commencé à la mi-1996 lorsque Jon Bosak , ingénieur chez Sun Microsystems, a élaboré une charte et recruté des collaborateurs. Bosak était bien connecté dans la petite communauté de personnes qui avaient de l'expérience à la fois avec le langage SGML et avec le Web.
XML a été compilé par un groupe de travail de onze membres , soutenu par un groupe d'intérêt de (environ) 150 membres. Des débats techniques ont eu lieu sur la liste de diffusion du groupe d'intérêt et les problèmes ont été résolus par consensus ou, lorsque cela échouait, par un vote majoritaire du groupe de travail. Un compte-rendu des décisions de conception et de leurs justifications a été compilé par Michael Sperberg-McQueen le 4 décembre 1997 James Clark a été responsable technique du groupe de travail, contribuant notamment à la <empty />syntaxe des éléments vides et au nom « XML ». D'autres noms ont été proposés à l'examen, notamment « MAGMA » (Minimal Architecture for Generalized Markup Applications), « SLIM » (Structured Language for Internet Markup) et « MGML » (Minimal Generalized Markup Language). Les co-éditeurs de la spécification étaient à l'origine Tim Bray et Michael Sperberg-McQueen . À mi-chemin du projet, Bray a accepté un engagement de conseil auprès de Netscape , provoquant de vives protestations de la part de Microsoft. Bray a été temporairement prié de démissionner de son poste de rédacteur en chef. Cette décision a donné lieu à un conflit intense au sein du groupe de travail, qui a finalement été résolu par la nomination de Jean Paoli , de Microsoft, comme troisième co-rédacteur en chef.
Le groupe de travail XML communiquait principalement par courrier électronique et par téléconférences hebdomadaires. Les principales décisions de conception ont été prises lors d'une brève période de travail intense entre août et novembre 1996, lorsque le premier projet de travail d'une spécification XML a été publié. D'autres travaux de conception ont continué jusqu'en 1997, et XML 1.0 est devenu une recommandation du W3C le 10 février 1998.