词序
更多
查询
词典释义:
XML
时间: 2023-09-20 12:10:50
[iksεmεl]

XML = eXtensible Markup Language[信息] XML语言

词典释义
XML = eXtensible Markup Language
[信息] XML语言
例句库

Les données seront transférées au format XML (Extensible Markup Language), à l'aide du système d'échange de données et métadonnées statistiques.

将用统计数据和元数据交换断面模式,将这些数据转换为可扩展标记语言格式。

Afin de contribuer à la définition de normes et de tenir compte des obligations découlant des règles européennes, les modèles de l'IDA ont été étudiés avec des organismes de normalisation, auxquels ils ont été soumis: le CEN-ISSS, le Centre des Nations Unies pour la facilitation du commerce et les transactions électroniques (CEFACT-ONU) et OASIS (consortium international à but non lucratif établissant des spécifications interopérables pour l'industrie sur la base de normes publiques comme XML (Extensible Markup Language, langage de programmation permettant la définition, la transmission, la validation et l'interprétation des données) et SGML (Standard Generalized Markup Language, plus ancien, apparenté à XML)).

为了促进标准的界定,考虑到欧洲要求,已经与诸如欧洲标准化委员会/信息社会标准化系统、联合国贸易便利化和电子商务中心和结构性信息标准推广组织(一个制订相互兼容的行业规格说明的非盈利国际协会,其依据是诸如可扩展标记语言(一种可以进行数据的定义、传送、确认和解释的语言)和之前的相关的标准通用标记语言等公共标准)等标准化机构讨论了行政机构间数据交换模型,并将其提交给这些机构。

L'adoption croissante de la norme OTA (Open Travel Alliance) fondée sur le langage XML (Extensible Markup Language) facilite grandement l'échange d'informations entre les entreprises de tourisme telles que les compagnies aériennes, les hôtels, les sociétés de location de voitures et les intégrateurs de voyages comme Cendant, Sabre, Expedia, Orbitz et SITA.

越来越多地采用以可延伸性标示语言为基础的开放旅游联盟标准大大便利了航空公司、旅馆、汽车租赁企业等旅游企业与Cendant、Sabre、Expedia、Orbitz和SITA等旅游集成商之间的信息交流。

La norme XML de l'OTA contribue à accroître la capacité des consommateurs d'effectuer des recherches et des réservations en une seule opération en ligne ainsi qu'à renforcer les processus de regroupement dans le secteur.

以可延伸性标示语言为基础的开放旅游联盟标准既有助于提高顾客通过一次性在线操作搜索和预订的能力,又有助于加强行业程序的整合。

En plus des formats PDF et HTML, la Liste récapitulative est désormais disponible en format XML, ce qui améliorera et facilitera son incorporation dans les bases de données et listes de surveillance nationales.

除了PDF和HTML格式,综合名单现在还以XML格式提供,这将改进和便利将名单纳入国家检测名单和数据库的工作。

Pour éviter des coûts inutiles, il est important de ne pas exiger que les données soient présentées selon un format autre que celui d'origine (bases de données existantes) ce qui supposerait leur conversion, encore que les progrès faits dans la mise au point d'un langage de balisage extensible (langage XML) puissent faciliter l'échange de données marines de format différent.

为避免造成额外开支,不应要求提供的资料从原数据库格式转换成其他格式,虽然可扩展标记语言(XML语言)方面的进展将推动不同格式的海洋数据进行交换。

Il est nécessaire de définir dans un avenir rapproché un cadre standard d'échange de données, qui repose de préférence sur le langage XML.

需要在不久的将来找出一种标准数据交换格式,最好基于XML。

Ils ont aussi été encouragés à revoir et à valider les données de projet et informés des avantages du programme XML.

还鼓励合作伙伴审查和验证项目数据,并告知了它们利用可扩展标记语言图式功能的好处。

法语百科

L'Extensible Markup Language (XML, « langage de balisage extensible » en français) est un métalangage informatique de balisage générique qui dérive du SGML. Cette syntaxe est dite « extensible » car elle permet de définir différents espaces de noms, c'est-à-dire des langages avec chacun leur vocabulaire et leur grammaire, comme XHTML, XSLT, RSS, SVG… Elle est reconnaissable par son usage des chevrons (< >) encadrant les balises. L'objectif initial est de faciliter l'échange automatisé de contenus complexes (arbres, texte riche…) entre systèmes d'informations hétérogènes (interopérabilité). Avec ses outils et langages associés, une application XML respecte généralement certains principes :

la structure d'un document XML est définie et validable par un schéma ; un document XML est entièrement transformable dans un autre document XML.

Historique

Dan Connolly ajoute le Standard Generalized Markup Language à la liste des activités du World Wide Web Consortium lorsqu'il s'y joint en 1995. Les travaux débutent à la mi-1996 lorsque l'ingénieur Jon Bosak (en) de Sun Microsystems élabore une charte et recrute des collaborateurs. Bosak se fait connaître dans la petite communauté de personnes qui avaient de l'expérience à la fois dans le SGML et dans le Web.

XML est compilé par un groupe de travail de onze membres, soutenu par environ 150 membres de divers groupes d'intérêt. Le débat technique a eu lieu sur la liste commune et les questions ont été résolues par consensus ou, lorsque cela a échoué, à la majorité des voix du groupe de travail. Les corédacteurs du cahier des charges étaient à l'origine Tim Bray, qui a notamment conduit l'informatisation du Oxford English Dictionary, et Michael Sperberg-McQueen, de l'Université de l'Illinois, qui était éditeur en chef de la DTD TEI ; accompagnés ensuite de Jean Paoli, de Microsoft, comme troisième coéditeur. James Clark servit comme responsable technique du groupe de travail, notamment en contribuant à l'élément vide « » et au nom « XML ». Tim Bray, dans son Annotated XML Specification (en) « la spécification XML annotée », explique plus longuement le contexte qui a rendu possible ce standard. Un compte rendu des décisions de conception et de leurs justifications ont été compilées par Michael Sperberg-McQueen, le 4 décembre 1997.

Le groupe de travail XML ne s'est jamais rencontré face-à-face, la conception a été réalisée en utilisant courrier électronique et téléconférences hebdomadaires. Les principales décisions de conception ont été prises en une vingtaine de semaines de travail intense entre juillet et novembre 1996, lorsque le premier travail de spécification XML a été publié. D'autres travaux de conception sont poursuivis jusqu'en 1997, puis le XML 1.0 est devenu une recommandation W3C le 10 février 1998.

XML et SGML

L'objectif initial de XML est expliqué au début de la spécification du 10 février 1998, la phrase est toujours d'actualité : « Son but est de permettre au SGML générique d'être transmis, reçu et traité sur le web de la même manière que l'est HTML aujourd'hui. »(fr). SGML est un langage de balisage, employé dans les industries de la documentation et de l'édition. En adoptant cette syntaxe pour HTML, Tim Berners-Lee confrontait une technologie complexe à de plus en plus d'utilisateurs. L'objectif d'XML était de définir un langage aussi générique, mais plus simple : « XML has been designed for ease of implementation »(en), « XML a été conçu pour une facilité de mise en œuvre »(fr).

À la lumière des années passées, cette spécification a rempli l'objectif qu'elle se fixait, XML a été largement suivi et favorise l'interopérabilité. La disponibilité d'une syntaxe standard et d'outils de manipulation réduit significativement le coût du cycle de développement, permettant à des programmes de modifier et de valider, sans connaissances préalables, des documents écrits dans ces langages. En effet, avant l'avènement du populaire langage généraliste de description de données qu'est XML, les concepteurs de logiciels avaient pour habitude de définir leurs propres formats de fichiers ou leurs propres langages pour partager les données entre programmes (à l'exception de quelques standards professionnels tels qu'EDIFACT). Ceci nécessitait de concevoir et de programmer des analyseurs syntaxiques spécialisés, ces tâches et bien d'autres s'effectuent désormais avec des outils XML standardisées.

Plusieurs choix ont contribué aux succès du XML.

Unicode

Par défaut, SGML était en ASCII (alphabet latin sans lettre accentuée). Il apportait un système d'encodage pour les autres signes, les entités de caractères que l'on trouve encore parfois en HTML (exemple : é pour é). En 1996, apparaît la version 2.0 d'Unicode. XML adopte cet encodage par défaut.

  <?xml version="1.0" encoding="UTF-8"?><外语>Китайська мова</外语>

Grammaire plus simple

SGML est orienté pour la saisie humaine de texte structuré, et autorise beaucoup de raccourcis. Ainsi HTML permet d'omettre certaines balises de fermeture, de raccourcir des attributs, de mélanger minuscules et majuscules. Ces possibilités compliquent le traitement automatique et sont interdites pour les applications de XML.

  <!-- exemple de HTML 4, application de SGML, avec attribut minimisé,       balises en minuscules et majuscules, balises fermantes optionnelles --><UL compact><LI>Item 1
   <li>Item 2</Li></ul><!-- exemple de XHTML, application de XML --><ul compact="compact"><li>Item 1</li><li>Item 2</li></ul>

Espace de noms

SGML insiste surtout sur la validation, sur la conformité à un modèle contraignant. XML prévoit un usage plus souple de l'information structurée. Il spécifie un moyen de faire cohabiter plusieurs vocabulaires de balises dans un même document grâce à la définition d'espace de noms.

  <?xml version="1.0" encoding="UTF-8"?><xsl:transform  version="1.0"xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns="http://www.w3.org/1999/xhtml"xmlns:tei="http://www.tei-c.org/ns/1.0"><!-- Transformation XSLT (instructions XML avec le préfixe “xsl:”) qui prend en entrée  du TEI (noms avec préfixe “tei:”) et donne en sortie du html (noms sans préfixe). --><xsl:template match="tei:abbr"><abbr><xsl:apply-templates/></abbr></xsl:template></xsl:transform>

Bilan

Paradoxalement, il reste un domaine où SGML persiste, les « HTML ». Le W3C ne développe plus XHTML (version de HTML plus stricte, avec par exemple des balises obligatoirement fermées), et se consacre plutôt à HTML5, successeur d'HTML4, qui ajoute quelques balises sans imposer la conformité à XML. L'échec de l'XHTML et le retour à HTML s'expliquent par la force des habitudes et la très importante base HTML installée.

Au-delà de HTML, le W3C avait d'autres projets exigeant une syntaxe plus facilement extensible. Ces directions ont permis une grande plasticité de XML lui offrant de nombreux usages. SGML était une technique de niche, Internet l'a simplifié et largement répandu.

Versions

La version 1.0 d'XML a été publiée le 10 février 1998.

La version 1.1 publiée le 4 février 2004 apporte des améliorations dans le support des différentes versions d'Unicode, permet l'usage de caractères de contrôle dans le texte (à l'exception du caractère 0), et organise les fins de ligne de façon compatible avec les technologies IBM.

Le W3C recommande aux processeurs XML de reconnaître les deux versions, bien que la première version soit beaucoup plus répandue que la seconde.

Comparaison avec d'autres formats

Comparé aux langages plus haut, XML est une syntaxe générique et extensible. Il permet de structurer une grande variété de contenus, car son « langage » (vocabulaire et grammaire) peut être redéfini.

Si le début de cet article était encodé en XML, il pourrait ressembler à ceci.

  <article xmlns="http://docbook.org/ns/docbook"><title>Extensible Markup Language</title><para><acronym>XML</acronym> (Extensible Markup Language, 
      « langage de balisage extensible »)...
    </para></article>

Dans ce code, chacun peut identifier des portions de texte (exemple : Extensible, XML…) et des mots clés encadrés de chevrons (<, >) :

, , <para>… Ces mots sont définis dans l'espace de noms Docbook. Le document est ouvert par le mot clé <article>, et clos par </article>. Notez la barre oblique, elle signifie la fermeture de la balise article. En XML, une balise doit toujours être fermée. À l'intérieur de cet article, il y a un titre <title>, un paragraphe <para>, et un acronyme <acronym>.</p><p>Ce qui est spécifique à XML, c'est le choix des chevrons pour identifier les balises, et l'obligation de les fermer. Les mots clés ne sont pas définis par la norme XML, mais par le vocabulaire choisi. En XHTML, l'élément racine aurait été html, en XSLT, cela peut être xsl:stylesheet ou xsl:transform. Ceci illustre la nature extensible d'XML. Ce n'est pas un jeu de noms réservés (exemple : echo, for, public, function, class…), mais plutôt des caractères réservés permettant de définir un « langage ».</p><p>Cet exemple illustre une autre spécificité de ce format. À part SGML, peu d'autres syntaxes permettent de séparer la définition sémantique de l'information (qu'est-ce qui est titre, lien, section…), de l'apparence qu'on lui souhaite (aujourd'hui un titre est souligné, demain on le voudra peut-être en bleu). Cela fait d'XML un excellent format pour conserver des textes ou des données. Pour s'en convaincre, regardons ce que la même information donne dans d'autres formats.</p><h3> Formats binaires </h3><p>Les logiciels, surtout pour le grand public, aboutissent généralement à des fichiers. L'interopérabilité et la pérennité de ces fichiers est une préoccupation qui passe souvent après la performance. Par exemple, le format historique d'enregistrement du traitement de texte Microsoft Word (*.doc) n'est pas lisible par l'humain, le texte est difficile à extraire, le lien avec sa structuration (gras, italique…) est difficile à reconstruire. Théoriquement, seul le logiciel qui le produit est capable de le lire.</p><pre> ÐÏ à¡± á > þÿ ! # þÿÿÿ ÿÿ% ð ¿ a bjbj%ç%ç Extensible Markup Language XML (Extensible Markup Language, « langage de balisage extensible ») i 8 @ñÿ 8 N o r m a l CJ _H aJ mH sH tH N @ N T i t r e 1 ÿ <span>[… beaucoup d'informations binaires supprimées]</span> ÿ ÿÿÿÿ À F Document Microsoft Word MSWordDoc Word.Document.8 ô9²q</pre><h3> RTF </h3><p>Afin de favoriser l'échange avec d'autres traitements de texte, Microsoft proposa RTF Rich Text Format « format texte riche » (1987). Ce n'est pas un format binaire, les commandes sont inscrites en texte lisible, mais elles ne sont pas destinées à être écrites par un humain.</p><pre> {\rtf {\f2\fs36\b <span>Extensible Markup Language</span>}\par {\b <span>XML</span>} <span>(Extensible Markup Language, </span> <span>« langage de balisage extensible »)...</span> \par }</pre><p>On retrouve le besoin d'encadrer du contenu avec un marqueur (ici les accolades {}), d'attacher des propriétés à ces groupes. Ainsi, {\b XML} indique que les lettres XML sont en gras, <i id="mwnA">bold</i><span id="mwnQ"> </span>: \b. Pour le titre, humains comme logiciels ne peuvent pas l'identifier par "\f2\fs36\b", ce code indique en fait l'apparence du paragraphe (gras, gros…). Ce format a montré qu'il pouvait fonctionner dans des logiciels, mais sa croissante complexité nous instruit sur ses limites. Il est difficilement extensible, et en tous cas, inutilisable pour structurer la sémantique d'un texte.</p><h3> T<sub id="mwnw">E</sub>X </h3><p>Donald Knuth, auteur de The Art of Computer Programming « l'Art de la programmation », s'est un jour (1977) indigné de la qualité d'impression de ses ouvrages. Il développa TEX, une syntaxe très élaborée destinée à l'écriture humaine, spécialement puissante pour les équations mathématiques. On remarquera que RTF lui a repris ses séparateurs (\, {, }), mais pas son système de macros pour factoriser les commandes.</p><div dir="ltr"> <pre> <span class="k">\documentclass</span><span class="na">[a4paper, 11pt]</span><span class="nb">{</span>article<span class="nb">}</span><span class="k">\title</span><span class="nb">{</span>Extensible Markup Language<span class="nb">}</span><span class="k">\begin</span><span class="nb">{</span>document<span class="nb">}</span><span class="k">\maketitle</span><span class="k">\end</span><span class="nb">{</span>document<span class="nb">}</span></pre> </div><p>TEX reste le standard de l'édition scientifique de qualité, en particulier pour la mise en forme des équations complexes. Toutefois, cela reste un langage de programmation destiné à la mise en forme, davantage conçu pour l'apparence des documents que pour stocker ou transférer des données.</p><h3> Wiki </h3><p>Une syntaxe wiki sait aussi séparer le contenu de la présentation.</p><pre> =={{lang|en|Extensible Markup Language}}== '''XML''' ({{lang|en|Extensible Markup Language}}, « langage de balisage extensible »)… </pre><p>Cependant, cette structuration repose ici sur des séquences de caractères particulières (<code id="mwsw"><span id="mwtA">==, '''</span></code>). Or, le nombre de caractères sans signification n'est pas indéfini. Un tel format peut être approprié pour un seul type de document, mais ce n'est pas une syntaxe générique et facilement extensible.</p><h2> Composants et syntaxe </h2><p>XML se présente en général comme une chaîne de caractères, séparant deux niveaux : du texte à destination des humains, et des balises à destination des machines. La structuration de ce texte par les balises produit un modèle informatique. D'un point de vue formel, un document XML est un arbre, articulant différents types de nœuds (texte, éléments, attributs, commentaires…). Il n’est pas indispensable de pénétrer le détail théorique de cette structure arborescente pour écrire du XML bien formé, toutefois, il est intéressant d’en comprendre le principe général, car c’est ce modèle qui explique les erreurs de syntaxe. Cette section présentera les différents composants du modèle XML, en insistant sur les contraintes imposées par leur définition, et en présentant différents type d’erreurs (malformations) qui produisent un document mal formé. Un document mal formé n’est plus du XML. Il casse toute la chaîne de traitement. Cette absence de rattrapage des erreurs peut parfois surprendre et décourager les débutants, mais c’est cette rigueur qui assure la qualité du format XML (notamment comparé en SGML). Heureusement, comme pour tout autre langage informatique, des logiciels d’édition assistent les utilisateurs pour éviter ces erreurs.</p><div dir="ltr"> <pre> <span class="cp"><?xml version="1.0" encoding="UTF-8"?></span><span class="cp"><?xml-stylesheet href="transformation.xsl" type="text/xsl"?></span><span class="cp"><?mode ecran?></span><span class="cp"><?instruction pour le traitement?></span><span class="c"><!-- Commentaire --></span><span class="nt"><ex:collection</span><span class="na">xml:lang=</span><span class="s">"fr"</span> <span class="na">xmlns:dc=</span><span class="s">"http://purl.org/dc/elements/1.1/"</span><span class="na">xmlns=</span><span class="s">"http://www.w3.org/1999/xhtml"</span><span class="na">xmlns:ex=</span><span class="s">"http://exemple.org"</span><span class="nt">></span><span class="nt"><élément></span>Texte<span class="nt"></élément></span><span class="nt"><dc:title></span>Astérix le Gaulois<span class="nt"></dc:title></span><span class="nt"><ex:livre</span> <span class="na">attribut=</span><span class="s">"valeur"</span> <span class="na">type=</span><span class="s">"BD"</span><span class="nt">></span><span class="nt"><dc:title></span>Astérix chez les Belges<span class="nt"></dc:title></span><span class="c"><!-- élément répété --></span><span class="nt"><dc:creator></span>René Goscinny<span class="nt"></dc:creator></span><span class="nt"><dc:creator></span>Albert Uderzo<span class="nt"></dc:creator></span><span class="nt"><dc:description></span><span class="nt"><b></span>Astérix chez les Belges<span class="nt"></b></span> est un album de <span class="nt"><a</span> <span class="na">href=</span><span class="s">"http://fr.wikipedia.org/wiki/Bande_dessinée"</span><span class="nt">></span>bande dessinée<span class="nt"></a></span> de la série Astérix le Gaulois créée par René Goscinny et Albert Uderzo. <span class="nt"><br</span> <span class="nt">/></span><span class="c"><!-- élément vide --></span> Cet album publié en 1979 est le dernier de la série écrit par René Goscinny. <span class="nt"></dc:description></span><span class="nt"></ex:livre></span><span class="nt"></ex:collection></span></pre> </div><h3> Nœud document </h3><p>Un document XML a toujours une et une seule racine, le nœud document. Dans la syntaxe d’exploration d’un arbre XML, XPath, le nœud document est abrégé avec la barre oblique /, comme la racine de l'arborescence d'un système de fichiers Unix. La racine peut éventuellement comporter des enfants de type commentaire ou instruction de traitement, elle doit obligatoirement comporter un et un seul élément.</p><div dir="ltr"> <pre> <span class="cp"><?xml version='1.0' encoding='utf-8'?></span><span class="nt"><item></span>Premier élément racine<span class="nt"></item></span><span class="nt"><item></span>Deuxième élément racine = malformation<span class="nt"></item></span></pre> </div><dl> <dt id="mwwQ"> Malformation<span id="mwwg"> </span> </dt> <dd id="mwww"> Le fichier ci-dessus n’est pas un document XML bien formé car il comporte plus d’un élément racine. </dd> </dl><h3> Éléments </h3><p>Un élément est un nœud, désigné par un nom qualifié au sein d'un espace de noms (<espace:élément/>). Ce nom ne peut pas contenir !"#$%&'()*+,/;<=>?@[\]^`{|}~ ou une espace et ne peut pas commencer par -. ou un chiffre. Un élément peut contenir la plupart des autres nœuds : texte, éléments, attributs… (à l'exception du nœud document). Des éléments peuvent être imbriqués, mais pas entrecroisés. Cette définition formelle est à l'origine des particularités de XML comparé à d'autres formats :</p><p>Répétable Une même propriété peut être répétée. L'exemple montre comment indiquer qu'un livre a plusieurs auteurs <dc:creator>. Dans un format tabulaire, avec un nombre de colonnes défini, ce n'est pas impossible, mais moins spécifié. Ordonné L'ordre des éléments est conservé. Quel que soit le langage employé, un outil XML doit permettre de distinguer le premier auteur du second (exemple : en XPath, /ex:collection/ex:livre/dc:creator[1] = "René Goscinny", /ex:collection/ex:livre/dc:creator[2] = "Albert Uderzo"). Hiérarchique Les éléments XML sont imbriqués. Ceci rend ce format particulièrement adapté à représenter des arbres. L'exemple est limité à 2 niveaux (/ex:collection/ex:livre), une collection avec un titre (Astérix le Gaulois), et un exemple d'ouvrage de cette collection (Astérix chez les Belges). XML permet une récursivité complète. Par exemple, un livre, ou une thèse, peut être formaté très économiquement avec un élément <section>. La partie 2.3.5 correspondra à une structure d'imbrication XML /section[2]/section[3]/section[5]. Mélangeable XML est plus qu'un format de données, c'est un format de document, permettant de mélanger du texte et des éléments, pour par exemple représenter du texte riche. Dans l'exemple, le texte de la description <dc:description> est enrichi avec des balises XHTML (gras <b>, lien <a>). Qualifié La qualification des noms contribue à la précision sémantique des contenus balisés. La notation xmlns="URI", ou xmlns:prefix="autre/URI", avec héritage hiérarchique, permet de rattacher tous les noms à une URI, et donc potentiellement à une documentation. Malformations Quelques exemples d’XML mal formé. <auteur><nom>Bon</nom>, <prénom>Jean</auteur></prénom> (la balise </prénom> est fermée après la balise </auteur> alors qu’elle a été ouverte avant. Le prénom doit être logiquement à l’intérieur de la balise auteur, comme le nom. <siècle>XX<exposant>e</siècle>, <para>Malformations</label> (paragraphe avec titre)</para> La balise <exposant> doit être fermée à l’intérieur de l’élément <siècle>, la balise </label> doit être ouverte avant d’être fermée à l’intérieur de l’élément <para>. <1-balise/>, <.balise/> , <balise!/>, <autre/balise,mal,nommée/>, <pas d’espace> Ces noms d’éléments comportent des caractères interdits, en première position ou ailleurs.</p><h3> Balises </h3><p>Une balise est un nom commode pour désigner les constructions entre deux chevrons <span id="mwAQU"><</span>…<span id="mwAQY">></span> dans un fichier XML. On distinguera les balises ouvrantes <span id="mwAQc"><</span>élément attribut="valeur"<span id="mwAQg">></span>, les balises fermantes <span id="mwAQk"><</span>/élément<span id="mwAQo">></span> (sans attribut et avec barre oblique au début), et les balises vides <span id="mwAQs"><</span>élément attribut="valeur"/<span id="mwAQw">></span> (barre oblique à la fin, attributs possibles). Il ne faut pas confondre les balises avec les éléments. Ces notations permettent de délimiter des éléments (ainsi que leurs attributs), mais les balises ne sont pas des nœuds dans le modèle abstrait du document.</p><h3> Texte </h3><p>Un nœud texte n'a pas d'enfants, il est toujours contenu dans un élément. Ainsi dans le cas de texte mêlé (exemple<span id="mwARA"> </span>: <code id="mwARE"><span id="mwARI"><</span>p> du texte en <span id="mwARM"><</span>b>gras<span id="mwARQ"><</span>/b> dans un paragraphe<span id="mwARU"><</span>/p></code>), ce n'est pas le texte qui contient le gras, mais plutôt l'élément parent <span id="mwARY"><</span>p<span id="mwARc">></span> qui contient plusieurs enfants<span id="mwARg"> </span>: un nœud texte, un nœud élément <span id="mwARk"><</span>b<span id="mwARo">></span>, un nœud texte (exemple<span id="mwARs"> </span>: p/node()[3]=" dans un paragraphe", p/b/node() = "gras").</p><p>Encodage Par défaut, le texte est traité comme de l'Unicode (UTF-8). XML permet de spécifier d'autres encodages dans le prologue pour des raisons historiques, on conseillera fortement de convertir tous ses textes en unicode. Espaces En XML, espaces et sauts de lignes sont équivalents, autrement dit, un document peut perdre son indentation en restant identique pour les traitements, sauf instructions particulières (exemple : bloc préformaté avec l'attribut @xml:space="preserve"). Malformations Comme tout langage informatique, XML est fondé sur des caractères qui ont un sens particulier pour la machine. La force de XML est d’avoir réduit le nombre de ces caractères au minimum, afin que le texte prime sur le “métatexte” (priorité des données sur les instructions). Dès qu’un analyseur XML (ex : navigateur Web) rencontre le caractère “inférieur” ou chevron <, les caractères qui suivent sont interprétés comme une balise. Ceci pose évidemment des problèmes dans une équation mathématique ou du code informatique if (a < 10) print("Unité"). La balise < 10)… n’a pas un nom d’élément correct (espace, commence par un chiffre), un analyseur XML criera ici à l’erreur, et s’arrêtera sans essayer d’être plus intelligent. C’est un problème pour tous les langages informatiques, qui introduisent alors des caractères d'échappement. Il faut au moins un caractère pour signaler que les caractères qui suivent doivent être interprétés autrement. En XML, c’est le rôle de l’esperluette & qui introduit des “entités”. Une entité est un nom XML encadré d’une esperluette et d’un point virgule. Ce nom a les mêmes contraintes que pour les éléments (pas d’espaces, surtout des lettres…). Dans un nœud texte, le signe inférieur doit être remplacé par < (lt : lesser than, moins que, signe inférieur). Du coup, l’esperluette acquiert elle aussi un statut particulier, et doit aussi être “échappée”. <sujet>Montaigne & La Boétie</sujet>, ce texte produira une erreur XML, car & La Boétie n’est pas une entité bien formée. Les esperluettes d’un nœud texte doivent être remplacées par l’entité & (amp : ampersand, espeluette). Mentionnons ici 3 autres entités nécessaires à XML, > (greater than, signe supérieur, >), " (quote, guillemet, "), ' (apostrophe, ').</p><h3> Attributs </h3><p>Un attribut est un nom et une valeur. Un nom d'attribut a les mêmes contraintes et possibilités de qualification qu'un nom d'élément. La valeur est un texte sans élément (ni autres nœuds). Un attribut est toujours porté par un élément (balise ouvrante). La valeur peut être vide <element attribut=""/>, mais pas nulle <element attribut> (cette écriture était permise en SGML, on la rencontre encore parfois à propos d'HTML, mais elle n'est pas acceptée en XML).</p><p>Un attribut est unique. La répétition d'un attribut de même nom sur le même élément provoquera une erreur du processeur XML. L'ordre des attributs n'est pas significatif, et peut ne pas être conservé dans certains traitements. <code id="mwAU4"><span id="mwAU8"><</span>element attribut1="valeur1" attribut2="valeur2"/></code> et <code id="mwAVA"><span id="mwAVE"><</span>element attribut2="valeur2" attribut1="valeur1"/></code> sont équivalents pour un processeur XML, même s'ils sont écrits différemment.</p><dl> <dt id="mwAVM"> Malformations<span id="mwAVQ"> </span> </dt> <dd id="mwAVU"> <code id="mwAVY"><élément onclick="if (this.length > 10) alert("Pourquoi ça marche pas ?")">Valeurs d’attributs contenant des guillemets ou le signe supérieur</élément></code> À l’intérieur d’une balise (entre les chevrons ouvrants et fermants <span id="mwAVc"><</span>…<span id="mwAVg">></span>), le chevron fermant ‘<span id="mwAVk">></span>’ et les guillemets ‘"’ ont une signification particulière dans la délimitation des valeurs d’attribut, et la fin de la balise ouvrante. Ces caractères doivent donc être échappées. À cette fin, XML prévoit les entités <code id="mwAVo"><span id="mwAVs">&</span>quot;</code> = " et <code id="mwAVw"><span id="mwAV0">&</span>gt;</code> = >. <br id="mwAV4"><code id="mwAV8"><élément répète-après-moi="après moi" répète-après-moi="parser error<span id="mwAWA"> </span>: Attribute répète-après-moi redefined"/></code> Les attributs ne sont pas répétables. </dd> </dl><h3> Commentaires </h3><p>En XML, les commentaires sont délimités par <code id="mwAWQ"><span id="mwAWU"><</span>!--</code> et <code id="mwAWY">--<span id="mwAWc">></span></code>. Le contenu d'un commentaire ne sera pas interprété.</p><p><code id="mwAWk"><span id="mwAWo"><</span>!-- Cet <élément> n'est pas fermé mais cela est autorisé dans un commentaire --<span id="mwAWs">></span></code>.</p><dl> <dt id="mwAW0"> Malformations<span id="mwAW4"> </span> </dt> <dd id="mwAW8"> La chaîne de caractères « <code id="mwAXA">--</code> » ne peut apparaître dans le contenu d’un commentaire (un interpréteur XML considère que ce signal annonce la fin d’un commentaire). </dd> </dl><h3> Prologue </h3><p>En XML, le prologue est constitué de la déclaration XML <?xml version="1.0" encoding="UTF-8"?>, et de la déclaration de type de document (DOCTYPE). La déclaration XML est obligatoire à partir de la version 1.1. La déclaration DOCTYPE avait une grande importance en SGML. Elle attache le document traité par un processeur à son schéma (DTD, Document Type Definition, « Définition de Type de Document »), afin de le valider, et d'interpréter certains raccourcis (les entités). Désormais, il existe plusieurs langages de validation, et parfois plusieurs manières de les attacher. La déclaration DOCTYPE n'a plus la même importance.</p><h3> Instructions de traitement </h3><p>Les instructions de traitement sont une possibilité un peu moins employée en XML que du temps de SGML. C’est une balise particulière qui s’ouvre par un chevron et un point d’interrogation, et qui se ferme avec un point d’interrogation et un chevron dans l’autre sens <code id="mwAXo"><span id="mwAXs"><</span>?clé valeur?></code>. Les lettres accolées au marqueur ouvrant forment la clé jusqu’au premier espace. La suite peut contenir des espaces, de la ponctuation et forme la valeur. Cette valeur n’a pas de syntaxe imposée par XML, ce sont les applications qui les interprètent pour leur besoin. Le W3C a cependant standardisé l’usage des instructions de traitement pour associer une feuille de style à un document XML, mais d’autres usages sont possibles. Elles peuvent être insérées à tout endroit entre les balises (mais pas dans une valeur d’attribut, ni entre chevrons au milieu d’une balise). Elles peuvent communiquer des instructions à destination des machines qui vont utiliser ce XML, sans que ce contenu soit considéré comme de l’information structurée par les balises. Ainsi par exemple, les instructions de traitements ne seront pas affichées par un navigateur, par contre, elles vont modifier leur comportement dans le traitement (et l’affichage) de cette information XML. Un éditeur XML peut aussi employer ce moyen pour associer un fichier XML à son schéma.</p><div dir="ltr"> <pre><span class="cp"><?xml version="1.0" encoding="UTF-8"?></span><span class="cp"><?xml-stylesheet href="tei2html.xsl" type="text/xsl"?></span><span class="cp"><?xml-model href="tei.rng" type="application/xml" </span><span class="cp"> schematypens="http://relaxng.org/ns/structure/1.0"?></span><span class="cp"><?erreur?></span><span class="nt"><TEI</span> <span class="na">xmlns=</span><span class="s">"http://www.tei-c.org/ns/1.0"</span><span class="nt">></span><span class="c"><!-- … --></span><span class="nt"></TEI></span></pre> </div><h3> Sections d'échappement </h3><p>Les sections d’échappement (CDATA) permettent de contenir n’importe quel texte, avec tous les caractères spéciaux XML <code id="mwAX8"><span id="mwAYA"><</span> <span id="mwAYE">></span> <span id="mwAYI">&</span></code>, sans qu’il soit nécessaire d’échapper ces caractères avec des entités. Elles sont souvent utilisés dans des documents qui contiennent des syntaxes informatiques (ex: javascript), avec de nombreux chevrons et esperluettes. Ces sections CDATA permettent de garder le texte original, en gardant conforme le flux XML.</p><div dir="ltr"> <pre><span class="nt"><script></span><span class="cp"><![CDATA[</span><span class="cp">if (chars > 140 && mode == tweet) {</span><span class="cp"> div.innerHTML = '<b>Attention !</b>, le {{140e}} caractère est dépassé !';</span><span class="cp">}</span><span class="cp">]]></span><span class="nt"></script></span></pre> </div><h3> Document bien formé, et valide </h3><p>Un document bien formé respecte les contraintes formelles définies ci-dessus, il n’a pas de “malformations”. À ce stade, XML n’est pas un langage, car il n’a pas de vocabulaire et très peu de grammaire, ce serait plutôt une ponctuation, ou mieux, un métalangage. Les spécifications ci-dessus n’interdisent pas de constituer des structures absurdes et inutilisables par des applications.</p><div dir="ltr"> <pre><span class="nt"><phrase</span> <span class="na">titre-livre=</span><span class="s">"XML idiot"</span><span class="nt">></span><span class="nt"><paragraphe></span><span class="nt"><chapitre></span><span class="nt"><toto></span> <span class="nt"><livre></span><span class="nt"><titi></span>Informatique sans bon sens n’est que ruine de l’âme et perte de temps.<span class="nt"></titi></span><span class="nt"></livre></span><span class="nt"></toto></span><span class="nt"></chapitre></span><span class="nt"></paragraphe></span><span class="nt"></phrase></span></pre> </div><p>En général, les balises XML ne sont pas inventées librement, mais selon les prescriptions d’un schéma dans une syntaxe informatique (DTD, Relax-NG, Schematron…), qui définit le dictionnaire des noms d’éléments et d’attributs, ainsi que la grammaire de leurs articulations. Lorsqu’un document XML déclare suivre un schéma, et être en accord avec celui-ci, il est dit “valide”. On dit aussi « valider contre un schéma ». « Rendre valide » signifie la correction des erreurs dans un document XML qu’un schéma a repéré. C’est l’objet de la section suivante de montrer la quantité de langages pouvant employer la ponctuation XML, selon des schémas différents.</p><h2> Utilisations et langages dérivés </h2><p>SGML était une syntaxe générique, permettant de définir des langages spécialisés (ex : HTML), mais il était surtout destiné au balisage de documents. En simplifiant SGML, les concepteurs d'XML prévoyaient d'élargir l'usage des chevrons (< >) à bien d'autres emplois, par exemple, la programmation. Les premiers langages basés sur XML par le W3C dessinent plusieurs directions d'utilisation.</p><p>1999, RDF Resource Description Framework(en) « cadre de description de ressource »(fr). Ce modèle abstrait vise à définir un réseau de métadonnées adapté au web, représentable en XML.</p><p>1999, XSLT eXtended Stylesheet Language Transformations « langage XML de feuilles de style, transformations ». Afin d'employer XML, il faut pouvoir le transformer. James Clark avait écrit un langage équivalent pour SGML (DSSSL, 1996), avec XSLT, il propose une syntaxe XML, permettant par exemple de transformer un contenu XML vers (x)HTML, ou XSL-FO.</p><p>2000, XSL-FO eXtended Stylesheet Language - Formatting Object « langage XML de feuilles de style - Formatage d'objets ». XSL-FO est un langage de description de document permettant de composer un livre, ou un document PDF. C'était un complément indispensable à XML pour les industries de l'édition.</p><p>Enfin, il fallait une nouvelle syntaxe schéma tenant compte des espaces de noms pour remplacer les DTDs (ce qui deviendra XML Schema).</p><p>Quelques mois après sa sortie, XML est donc utilisé pour encoder des données, programmer des transformations, représenter un objet imprimable, et définir le schéma d'un document XML. Ceci annonce la variété des utilisations de cette syntaxe. Quelques années après, le catalogue est beaucoup plus important, couvrant des usages comme<span id="mwAao"> </span>:</p><p>langage de balisage de documents,</p><p>format de données,</p><p>langage de description de format de document (DSDL),</p><p>langage de représentation (texte, image…),</p><p>langage de programmation,</p><p>protocole de communication.</p><p>Ces catégories permettent une classification approximative des langages à base XML (ou acceptant une expression XML). La liste des langages plus bas repère quelques spécifications marquantes. Elles ont fait date dans le monde XML. Les succès, ou les critiques, permettent aussi de montrer à quoi XML est bon, et là où il est parfois discuté.</p><h3> Balisage de document </h3><p>Le balisage de document est le métier initial d'XML. Les DTD SGML publiques comme TEI et Docbook l'ont adopté. XML aurait pu permettre l'apparition de nombreux autres schémas. On assiste plutôt à l'apparition de vocabulaires spécialisés, et combinables à l'exemple de la modularisation XHTML :</p><p>XHTML - eXtensible HyperText Markup Language, Langage de balisage hypertexte</p><p>Docbook - documentation technique, 1991 à 1997 O'Reilly, 1998 à … OASIS, (Norman Walsh).</p><p>TEI - Text Encoding Initiative, balisage de textes académiques, 1987, 1994, 1999, 2002, Text Encoding Initiative.</p><p>EAD Encoded Archival Description, description archivistique, 1993, 2002, Bibliothèque du Congrès.</p><p>NITF (en) News Interchange Text Format, échange d'articles de presse, 2000, 2002, IPTC.</p><p>NewsML (en) News Markup Language, balisage de dépêche de presse, 2000, 2002, IPTC.</p><h3> Format de données </h3><p>XML s'est imposé comme format de référence pour l'échange de données, notamment de métadonnées. L'exemple d'un transfert d'informations entre base de données relationnelles permettra d'illustrer les avantages et limites de ce format pour cet usage.</p><p>L'exportation d'une table peut se faire en csv. Mais ce format comporte vite des limites à grande échelle (Internet). Il n'est pas auto-documenté (encodage du texte, séparateurs, ordre et nom des colonnes ?). Il demande une documentation externe rarement automatisée entre les partenaires. Que faire lorsque les tables source et destination n'ont pas des structures identiques ? Pour cette raison, on peut préférer des échanges en SQL (à la fois langage de définition de données et langage de manipulation de données). Cependant, malgré de nombreux efforts de normalisation, SQL comporte beaucoup de risques d'incompatibilité entre les implémentations. XML est une solution plus robuste. On peut en constater l'efficacité sur Internet avec la syndication de contenu. Il n'y a pas d'exemple connu d'échange de métadonnées réparties sur autant de « clients » et de « serveurs ».</p><p>Verbosité ? - Comparé à l'export CSV d'une table, XML réplique le nom de la colonne pour chaque cellule (une fois pour un attribut, deux fois pour un élément). Le poids du fichier généré est supérieur à celui d'un fichier CSV. Dans des contextes où la bande passante est coûteuse (exemple : téléphonie mobile), cela n'a pas semblé poser de problème (WML), car ces répétitions se compressent très bien (zip).</p><p>Traitement lourd ? - Traiter du XML demande des bibliothèques spécialisées (processeur XML). Cela n'ajoute pas vraiment du temps de développement supplémentaire, du moins pour des équipes formées. Pour des petites tâches, un parseur ligne à ligne est parfois plus simple. Mais si la donnée se destine à se complexifier, à s'échanger plus largement, il vaut mieux choisir XML dès le départ.</p><p>XML : données ou document ? - Cette section est l'occasion de marquer la distinction entre XML données et XML document. Il ne s'agit pas d'une différence dans la syntaxe, mais dans ses usages, ses outils et ses communautés d'utilisateurs. Par SGML, XML vient du document. On lui a reproché par exemple ne pas avoir (nativement) de typage fort. On rencontre un mouvement analogue mais contraire en SQL. C'est originalement un format de données, on lui demande de plus en plus de traiter du texte. (CMS LAMP). En ce qui concerne XML, cette opposition se traduit dans la direction des efforts de spécification (types de données XML Schema, XPath 2.0, XSLT 2.0) avec des réactions du monde documentaire (Relax NG).</p><p>RDF - Resource Description Framework Réseaux de métadonnées, © 1997 à 2006 W3C.</p><p>RSS Rich Site Summary, RDF Site Summary et Really Simple Syndication, 1999 à…, (principe plus que norme).</p><p>Atom - syndication, 2003, IETF.</p><p>OWL - Ontologies (W3C)</p><p>GML - Données géographiques (Open Geospatial Consortium)</p><p>Dublin Core - bibliographie (dublincore.org)</p><p>MODS - bibliographie (Bibliothèque du Congrès, USA)</p><p>METS - échange de collection de fichiers (Bibliothèque du Congrès, USA)</p><p>BiblioML - bibliographie (Bibliothèque nationale de France)</p><p>EbXML - commerce électronique (OASIS)</p><p>XBRL - Données comptables</p><p>XMI - XML Metadata Interchange</p><h3> Langages de schéma </h3><p>Un processus XML complet comporte une étape de validation des documents. C'est le rôle d'un schéma de définir ces règles de validité. Faut-il que ce schéma soit en XML ? La question ne se posait pas en SGML, qui connaissait surtout les DTD, une syntaxe texte. Les limites rencontrées alors concernaient surtout la documentation des éléments et attributs déclarés (en). La documentation est très importante pour la réussite d'un standard XML. Celles de Docbook ou TEI constituent des livres complets, avec même des versions imprimées.</p><p>Ces communautés ont attendu avec impatience ce que donnerait XML Schema. Les nombreux outils de documentation automatiques qui sont apparus, avec un simple jeu d'XSLT, prouvent l'intérêt d'XML comme langage de description de format de document. Cependant, pour des choses simples, XML Schema s'est avéré difficile. Est-ce l'effet de trop de concessions ? Toujours est-il que malgré le nombre d'éditeurs derrière le W3C, la communauté est très intéressée par Relax NG, de James Clark. Ce modèle accepte une syntaxe XML, et depuis 2003, propose aussi une forme compacte, textuelle, qui n'est pas XML.</p><p>Autrement dit, il n'y a plus de réponse unique. Un schéma XML peut se définir dans un vocabulaire XML, ou autrement. L'évolution actuelle est de pouvoir combiner plusieurs langages de schémas, notamment le typage fort d'XML Schema, avec des motifs XPath pour Schematron, dans du Relax NG.</p><p>DTD Document Type Definition « définition de type de document », ISO.</p><p>XML Schema langage de Schéma XML, W3C, 2001.</p><p>Relax NG, DSDL acceptant une forme XML et une syntaxe compacte, ISO, 2001.</p><p>Schematron, validation par motifs, ISO, 2001.</p><p>LOM/ IEEE LOM, scorm 2004 spécifie que son fichier xml manifest doit être compatible avec le modèle de donnée SCORM LOM et le schéma XML .</p><h3> Langages de représentation </h3><p>Organisation d'un document au format OpenDocument : content.xml (contenu), styles.xml (apparence), meta.xml (à propos du document)</p><p>On vante souvent XML pour sa faculté de séparer contenu, présentation et traitement. Attention, XML rend cette séparation possible, mais il n'interdit pas de tout mélanger, comme dans certaines pages XHTML sur Internet. En tous cas, ce format extensible a prouvé qu'il pouvait conserver la présentation des documents pour les applications les plus exigeantes. La variété des applications l'utilisant en est la preuve.</p><p>MathML - formules mathématiques, W3C, 1999, 2001, 2003.</p><p>Office Open XML - documents bureautiques, Microsoft Office versions 2007 et 2008.</p><p>OpenDocument - documents bureautiques.</p><p>SVG - Scalable Vector Graphics, graphiques vectoriels 2D, W3C, 2003.</p><p>SMIL - Synchronized Multimedia Integration Language, Intégration multimédia, W3C, 1998, 2005.</p><p>XSL-FO - eXtensible Stylesheet Language - Formatting Objects, langage extensible de stylage - formatage d'objets, W3C, 2001.</p><p>X3D - 3D multimédia, consortium Web3D.</p><h3> Langages de programmation </h3><p>Dans de nombreuses applications, il est parfois pratique de développer un langage spécialisé, à usage local. Avec un schéma, un dialecte XML dispose d'une grammaire (un peu comme BNF). En guise de compilateur, il suffit par exemple d'une transformation XSLT qui génère du code Java, comme pour une bibliothèque de balises (taglibs). Cet exemple montre comment la syntaxe XML permet de définir des langages de programmation.</p><p>En théorie, la structure en arbre d'XML permet de représenter la hiérarchie d'un programme objets, ou l'imbrication des instructions d'un langage impératif. En pratique, les boucles sont le cas limite à partir duquel XML devient trop verbeux. Par contre, cette écriture est remarquablement adaptée aux syntaxes déclaratives (configuration, définition d'interface), et même, popularise les algorithmes fonctionnels (XSLT, logique d'une application web).</p><p>Il en résulte que l'on trouve de plus en plus d'XML dans les logiciels. Dans certains frameworks de développement web, il est possible de monter une application complète et complexe, en n'éditant que du XML.</p><p>XSLT - Extended Stylesheet Language Transformations, transformation de document XML, W3C, 1999.</p><p>XQuery - requête et transformation XML, W3C, 2005.</p><p>ANT - scripts de compilation, ASF.</p><p>Servlet - serveur d'application Java, configuration et logique fonctionnelle, Sun Microsystems.</p><p>Log4j - log for Java, configuration d'une bibliothèque d'historique, 1996, © 1999-2006, ASF.</p><p>UIML - User Interface Markup Language, définition d'interface utilisateur graphique, OASIS, 1997.</p><p>XUL - XML-based User interface Language, définition d'interface, Mozilla, 2000.</p><p>XAML - définition d'interface, Windows Vista, 2006.</p><p>MXML, Flex - définition d'interface, Macromedia.</p><p>Apache XSP - eXtensible Server Pages - génération de documents XML côté serveur.</p><h3> Protocoles d'échanges </h3><p>Un protocole spécifie l'échange de contenus et d'instructions, entre un client et un serveur. HTTP est un modèle de protocole (qui n'est pas XML mais textuel). XML permet de baliser des contenus et d'écrire des instructions de programmation. L'universalisation de la connexion HTTP comme des processeurs XML explique pourquoi XML devient une solution courante pour créer un nouveau protocole.</p><p>XForms - formulaires web (W3C)</p><p>OAI - Open Archive Initiative Protocole Archives ouvertes, 2000, 2002 (OAI)</p><p>SOAP - RPC par HTTP (W3C)</p><p>WSDL - Services web (W3C)</p><p>WebDAV - Lecture/Écriture distante par HTTP (IETF)</p><p>Jabber/XMPP - Messagerie instantanée et présence, multimédia (IETF)</p><h3> Langages associés </h3><p>Les langages associés à XML sont des syntaxes qui ne sont pas en XML mais très attachées à XML. CSS illustrera bien la notion. Il peut être contenu dans un attribut (@xhtml:style), dans un élément (<xhtml:style>), ou relié à un document XML par une instruction de traitement (<?xml-stylesheet href="common.css" type="text/css"?>). XPath fournit un autre exemple de spécification entièrement destinée à XML, mais qui est justement sans éléments ou attributs, afin d'être associé à un langage XML (XSLT).</p><p>CSS (Cascading Style Sheet)</p><p>DTD (Document Type Definition)</p><p>Espace de noms (Namespace)</p><p>SGML</p><p>XPath et XQuery, langages de requête. NB: XQuery possède aussi une syntaxe XML, XQueryX.</p><h2> Outils et processus </h2><p>XML a prouvé qu'il était une syntaxe très générique de balisage, propre à de nombreux usages. Cette réussite s'explique par des implémentations concurrentes de nombreuses interfaces de programmation (API) précisément spécifiées. Un processus XML est essentiellement une chaîne de transmission de l’information. Pour l’édition XML de document, on peut isoler les étapes suivantes, presque canoniques :</p><p>produire : un document XML peut être produit par un humain ou résulter d’un export d’une source de données dans un autre format ;</p><p>analyser : un parser lit le fichier XML pour construire un objet informatique, et vérifie que le document est bien formé ;</p><p>inclure : dans certains contextes, il est possible d'inclure des fichiers qui deviendront des nœuds ;</p><p>valider : le document peut ensuite être validé, pour vérifier que sa structure est conforme à son schéma ;</p><p>transformation : le document peut être enfin transformé dans un autre format, par exemple à destination d’un navigateur, un traitement de textes, ou un tableur.</p><p>Cette succession canonique d'étapes illustre ce que peut être le “tuyau” (<i id="mwAvQ">pipe</i>) d'un processus XML standard. </p><h3> Exporter et produire </h3><p>Une organisation qui a déjà son système d'informations, non basé sur XML, peut se demander comment produire du XML. Il existe de nombreuses manières d'exporter et de produire du XML.</p><p>Traitement de texte, la plupart des logiciels bureautiques proposent un export XML, quand ils ne sont pas nativement XML (LibreOffice, Apache OpenOffice, Microsoft Word). Le plus simple est parfois d'enregistrer en HTML, récupérable moyennant un petit traitement. Il suffit de regarder les formats disponibles avec la fonctionnalité Enregistrer sous de son logiciel habituel.</p><p>SQL, la plupart des SGBD proposent un export XML.</p><p>Un éditeur XML est le meilleur moyen de faire produire par un humain un document correspondant exactement au schéma attendu.</p><h3> Analyseur syntaxique et API </h3><p>Pour entrer dans un processus, un document XML doit rentrer dans un processeur dédié. Les parseurs les plus répandus sont :</p><p>libxml2 - Le processeur XML libre du système d'exploitation linux, accessible en C, Python, PHP, et en Ruby</p><p>Xerces - XML Java Parser, le parseur XML par défaut d'une machine virtuelle Java, accessible en Java</p><p>Expat - Le parseur XML de James Clark, notamment embarqué par les navigateurs mozilla (firefox).</p><p>MSXML - Microsoft Core XML Services, le parseur XML Microsoft, 2000-2006, intégré au système d'exploitation Windows, accessible aux langages Microsoft, notamment en JavaScript sur le navigateur Internet Explorer.</p><p>Il en existe beaucoup d'autres, en particulier en Java, adaptés à différents cas particuliers<span id="mwAyQ"> </span>: ouvrir une API plus simple, accepter des documents mal formés comme HTML, traitements plus simples (notamment pour les documents longs).</p><p>Une fois « xmlisé », un document est accessible à différents langages, selon des interfaces de programmation standardisées. On distingue généralement l'approche en mémoire, comme le DOM, et l'approche en flux (génération d’événements), comme SAX.</p><p>DOM, Document Object Model, constitue un objet en mémoire de la totalité d'un document XML. Cette API permet l'accès direct à tous les nœuds de l'arbre (éléments, texte, attributs), pour les lire, ou les modifier. Il est par exemple très utilisé sur les navigateurs web avec JavaScript. Cette norme est écrite par le W3C.</p><p>SAX, Simple API for XML, est une alternative intéressante à DOM pour le traitement de documents longs. Quand un document entre dans un processeur XML, du code SAX peut capturer des événements, comme l'ouverture et la fermeture d'une balise, afin par exemple, d'écrire dans une base de données. À l'inverse, il est possible de générer des événements SAX, par exemple à partir de la lecture d'une base de données, afin de produire un document consommé par une autre étape d'un processus XML.</p><p>D'autres API existent, comme JDOM, dom4J (Java), ou StAX.</p><h3> Inclusions </h3><p>Un document XML peut être constitué de plusieurs fichiers, qui sont rassemblés au moment de l’analyse ci-dessus. Il y a deux normes actuellement concurrentes.</p><p>les entités externes, issues de SGML, résolues a priori par un parseur validant, avant tout traitement du document.</p><p>xinclude, un élément XML spécial, pouvant être traité comme une étape séparée.</p><p>Les spécifications et les implémentations privilégient maintenant <span>xinclude</span>, bien que son adoption ait pu être discutée.</p><p>Considérons l'exemple d'un catalogue de produits pour voir les effets de l'un et de l'autre. On aura chaque produit sous la forme d'un document XML, et un document maître qui assemble toutes les références. En entités, cela s'explique ainsi.</p><div dir="ltr"> <pre> <span class="cp"><!DOCTYPE catalogue [</span><span class="cp"> <!ENTITY article001 SYSTEM "articles/article001.xml"></span><span class="cp"><!ENTITY article002 SYSTEM "articles/article002.xml"></span> ]> <span class="c"><!-- Un exemple d'inclusion par résolution d'entité externe --></span><span class="nt"><catalogue</span> <span class="na">xmlns=</span><span class="s">"http://exemple.net/ns"</span><span class="nt">></span><span class="nt"><titre></span>catalogue<span class="nt"></titre></span><span class="ni">&article001;</span><span class="ni">&article002;</span><span class="nt"></catalogue></span></pre> </div><p>On remarquera que les entités sont déclarées en entête de document, puis appelées par une écriture du type &entité;. Cette syntaxe est initialement prévue pour des raccourcis, afin de factoriser l'écriture de variables comme un nom de produit ou une société. Ce mécanisme a été étendu pour résoudre les problèmes d'encodage en ASCII avant l'Unicode. Ce sont les entités caractère comme é=&#E9;=é. Pour le cas d'une inclusion d'un fichier, cela demande deux déclarations, celle du lien, celle de son appel.</p><p>La résolution a priori des inclusions peut avoir des inconvénients, en particulier pour des documents maître très lourds que l'on peut vouloir travailler sans leur dépendances. Xinclude permet cela, ainsi que de générer ces relations automatiquement (XSLT).</p><div dir="ltr"> <pre> <span class="c"><!-- Un exemple d'inclusion par xinclude --></span><span class="nt"><catalogue</span> <span class="na">xmlns=</span><span class="s">"http://exemple.net/ns"</span><span class="na">xmlns:xi=</span><span class="s">"http://www.w3.org/2001/XInclude"</span><span class="nt">></span><span class="nt"><titre></span>catalogue<span class="nt"></titre></span><span class="nt"><xi:include</span> <span class="na">href=</span><span class="s">"articles/article001.xml"</span><span class="nt">/></span><span class="nt"></catalogue></span></pre> </div><p>XML peut se présenter sous d’autres formes qu’un fichier, par exemple à l’intérieur d’une base XML native. La nature purement arborescente du format permet potentiellement de constituer des structures très importantes, non pas seulement chaînées comme un tableau très long, mais articulées, avec branches et sous-branches.</p><h3> Validation </h3><p>La validation est l'opération automatique qui vérifie la conformité d'un document XML à son schéma. Elle a pour but de délivrer des messages comme il n'y a pas de titre au chapitre 5, ou bien, la date de fabrication est dans le futur. La précision et la convivialité de cette vérification dépendent de la syntaxe utilisée.</p><p>En SGML, la validation s'effectuait toujours avant l'entrée d'un document XML dans un processus. On parlait de parser validant. Il n'y avait alors qu'un seul langage de validation (les DTDs) déclarés d'une seule manière à l'intérieur du document XML (la déclaration DOCTYPE, Type de document). La pratique a montré que la validation n'est pas toujours nécessaire, et même, contre performante. Dans d'autres cas, plusieurs étapes de validation peuvent être utiles, par exemple, une pour vérifier la structure de l'arbre XML, une autre pour vérifier les liens. L'évolution va vers une étape de validation distincte, déclarée à l'extérieur du document, et gérée selon les besoins du logiciel.</p><p>Le déploiement actuel des librairies rend la validation XML nativement accessible à la plupart des systèmes, et dans la plupart des langages de programmation.</p><p>libxml2 - Validation DTD et Relax NG (le support XML Schema est partiel, surtout pour le typage de données au sein de Relax NG).</p><p>Jing - a Relax NG validator in Java, un validateur qui n'est pas un parseur pour Relax NG et Schematron.</p><p>MSXML - Microsoft Core XML Services, validation DTD et XML Schema.</p><p>Xerces - XML Java Parser, validation DTD et XML Schema.</p><p>XSLT - Une transformation XSLT permet une validation très précise sur un type de document, c'est couramment utilisé dans une application web pour rendre à l'utilisateur des messages plus conviviaux, cet outil suffit aussi pour utiliser une implémentation Schematron.</p><h3> Transformation </h3><p>La transformation est l'étape d'un processus XML qui prend un document dans un certain schéma pour le transposer dans un autre espace de noms. Soit un document textuel qui ne comporte que du contenu. Il sera nécessaire de lui ajouter au moins de la navigation avant de le diffuser sur Internet ; on en voudra aussi une version imprimée (pdf). La facilité de transformer un document XML, notamment avec XSLT, est une raison importante pour choisir ce format.</p><h2> Conclusion </h2><p>En 2001, on demandait à James Clark, un expert XML et SGML, What's the next step for XML? « Quelle est l'étape suivante pour XML » ? Il répondit d'abord que cela revenait à demander quelle est l'étape suivante pour le texte ou pour les fichiers à lignes délimitées. Selon lui, à peine 3 ans après, la nouveauté ne viendrait plus du format, mais des applications. En effet en 2015, on ne constate aucun changement de fond dans la spécification XML. C’est devenu un format aussi universel qu'Unicode, comme un espéranto de l'informatique pour structurer des contenus.</p><p>XML permet en effet de représenter beaucoup de structures différentes, il a par exemple contribué à généraliser et normaliser les structures en arbre, si bien qu’elles sont considérées aussi informatisables que les tables (SQL). Toutefois, les balises n’ont pas effacé toutes les syntaxes textuelles. On a par exemple vu se généraliser JSON, qui permet la représentation et l’échange de données hiérarchiques, comme par exemple des objets (au sens informatique). La vogue de JSON, qui n’en doutons pas restera longtemps, permet de mieux définir les spécificités de XML. JSON sépare strictement la structure arborescente, et les données contenues dans des feuilles. Ce modèle représente difficilement le texte riche, où par exemple un nom de personne indexé apparaît en plein milieu d’une phrase. JSON ne propose pas de syntaxe standardisée pour la validation et la documentation, ce sont souvent des structures adhoc. La force de XML, qui n’est pas la plus sollicitée hors de l’informatique du document, est dans la validation, ce qui contribue à standardiser des types de documents à grande échelle, ne serait-ce que le Web et HTML.</p></div> </div> <div class="tab-h1"> 中文百科 </div> <div class="tab-zk1"> <div><div class="thumb tright"> <div class="thumbinner" style="width:200"> <img src="https://wiki-gateway.eudic.net/wikipedia_zh/I/m/XML.svg.png" data-file-width="275" data-file-height="313" data-file-type="drawing" height="228" width="200" class="head-img-wiki"> </div> </div><p>可扩展标记语言(英语:eXtensible Markup Language,简称: XML),是一种标记语言。标记指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种信息的文章等。如何定义这些标记,既可以选择国际通用的标记语言,比如HTML,也可以使用像XML这样由相关人士自由决定的标记语言,这就是语言的可扩展性。XML是从标准通用标记语言(SGML)中简化修改出来的。它主要用到的有可扩展标记语言、可扩展样式语言(XSL)、XBRL和XPath等。</p><h2> 历史 </h2><p>文档中能够明确的将标示与内容分开</p><p>所有文档的标示使用方法均一致</p><p>不能解决所有解释数据的问题 - 像是影音档或化学公式、音乐符号等其他形态的内容。</p><p>性能问题 - 需要下载整份文档,才能开始对文档做搜索。</p><p>扩充性、弹性、易读性均不佳。</p><h2> 用途 </h2><p>丰富文档(Rich Documents)- 自定文档描述并使其更丰富 属于文档为主的XML技术应用 标记是用来定义一份资料应该如何呈现</p><p>属于文档为主的XML技术应用</p><p>标记是用来定义一份资料应该如何呈现</p><p>元数据(Metadata)- 描述其它文档或网络资讯 属于资料为主的XML技术应用 标记是用来说明一份资料的意义</p><p>属于资料为主的XML技术应用</p><p>标记是用来说明一份资料的意义</p><p>配置文档(Configuration Files)- 描述软件设置的参数</p><h2> 例 </h2><p>XML定义结构、存储信息、传送信息。下例为小张发送给大元的便条,存储为XML。 <?xml version="1.0"?> <小纸条> <收件人>大元</收件人> <发件人>小张</发件人> <主题>问候</主题> <具体内容>早啊,饭吃了没? </具体内容> </小纸条> 这XML文档仅是纯粹的信息标签,这些标签意义的展开依赖于应用它的进程。 结构 每个XML文档都由XML序言开始,在前面的代码中的第一行就是XML序言,<?xml version="1.0"?>。这一行代码会告诉解析器或浏览器这个文档应该按照XML规则进行解析。 但是,根元素到底叫<小纸条>还是<Book>,则是由文档类型定义(DTD)或XML纲要定义的。如果DTD规定根元素必须叫<小便条>,那你写作<小纸条>就不符合要求。这种不符合DTD或XML纲要的要求的XML文档,被称作不合法的XML,反之则是合法的XML。 XML文档的第二行并不一定要包含文档元素;如果有注释或者其他内容,文档元素可以迟些出现。 这个PI一般会直接放在XML序言之后,通常由Web浏览器使用,来将XML数据以特殊的样式显示出来。 XML的结构有一个缺陷,那就是不支持分帧(framing)。当多条XML消息在TCP上传输的时候,无法基于XML协议来确定一条XML消息是否已经结束。</p></div> </div> </div> <div class="content"> <!-- 页面4 法法词典--> <div class="tab-h1"> 法法词典 </div> <div class="tab-zk2"> <div class="item-con"> <div class="item zt"> <p class="item-tit">XML sigle nom - masculin ; singulier</p> <ul class="authority-list "> <li> <p class="source"><span>1. informatique langage informatique de marquage hypertexte dérivé du HTML autorisant la construction de structures complexes (sigle anglais) XML = eXtensible Markup Language</span></p> <p class="target"><span>le langage XML</span> </p> </li> </ul> </div> </div> </div> </div> </main> </div> </div> </div> </div> <div class="content-r"> <div class="content-r1"> 相关推荐 </div> <div class="content-r2"> <p> <a href="/fr/dyyfa36wq.html">chlorophyllien chlorophyllien, nea.叶绿素</a> </p> <p> <a href="/fr/r3vgf7rm5.html">优越的 supérieur, eprééminent, -eprépondérant, -e</a> </p> <p> <a href="/fr/lb6py3r15.html">acidulé acidulé, ea.微酸的, 略酸的常见用法</a> </p> <p> <a href="/fr/oozrt1srb.html">maigreur n.f.1. 瘦2. 〈转义〉稀疏;瘠薄;微薄;枯燥</a> </p> <p> <a href="/fr/vzfo4g1sr.html">spécialisé spécialisé, eadj. 专业的, 专长的; 专业的</a> </p> <p> <a href="/fr/0dfubjbr6.html">suturé suturé adj. 缝合</a> </p> <p> <a href="/fr/fpxn62qc0.html">lingua franca n. f. 1[意][语]萨比尔语2[语](母语不同的人使用的)交际共同语</a> </p> <p> <a href="/fr/g47m2b8cg.html">traverser 穿过,越过</a> </p> <p> <a href="/fr/sw9gq1n35.html">formel formel, lea.1. 明确, 确切, 肯定, 正 2. 外, 面;形, 形上;流于形常见用法</a> </p> <p> <a href="/fr/bxxe6mrtj.html">clientèle 顾客,主顾</a> </p> </div> </div> <div> </div> <div class="footer"> <p>©2023 <a href="https://m.cixu.net">词序词典</a>(m.cixu.net) </p> <p style="text-align: center;margin-top:10px;"><a href="https://m.cixu.net" target="_blank">词序词典手机移动站</a> </p> </div> </body> </html> <script src="/m/js/jquery-1.11.3.min.js"></script> <script> window.onload = function () { var doc = document isShow() function isShow() { var liArr = doc.querySelectorAll('#box > li') var divArr = doc.querySelectorAll('.wrapper .content') for (var i = 0; i < liArr.length; i++) { liArr[i].index = i; liArr[i].onclick = function () { for (var j = 0; j < liArr.length; j++) { liArr[j].className = '' divArr[j].className = '' } divArr[this.index].className = 'show' liArr[this.index].className = 'add2line' } } } // 当前视窗的宽度 var WINDOW_OFFSETWIDTH = doc.documentElement.clientWidth var liArr = doc.querySelectorAll('#box > li') for (var i = 0; i < liArr.length; i++) { liArr[i].addEventListener('click', function (e) { // 获取当前点击元素的宽度 var itemWidth = this.offsetWidth // 当前事件对象相对移动的距离 var moveX = e.target.offsetLeft // 目标居中的距离 = (当前元素距离左边的相对距离 / 2)+ (视口距离 / 2) var left = moveX - (WINDOW_OFFSETWIDTH / 2) + (itemWidth / 2) doc.getElementById('box').scrollLeft = left }) } } </script> <script> var preNode = '' var preNode1 = '' $('.tabcyDJ .top-box .word').click(function (e) { console.log(e) console.log(this) if (this.className == 'word on') { this.className = 'word' $('.tabcyDJ .top-box .word-more').hide() } else { $('.tabcyDJ .top-box .word').removeClass('on') $('.tabcyDJ .top-box .word-more').hide() // $(this).parent().find('.word-more').show() $(this).children('.word-more').show() this.className = 'word on' $(this).children('.word-more').children('.word-more-tab-curs').children(":first").show() $(this).children('.word-more').children('.word-more-tab').children(":first").addClass('cur') preNode = $(this).children('.word-more').children('.word-more-tab-curs') preNode1 = $(this).children('.word-more').children('.word-more-tab') } event.stopPropagation() }) $(document).click(function (e) { $('.tabcyDJ .top-box .word-more').hide() $('.tabcyDJ .top-box .word').removeClass('on') }) $('.tabcyDJ .top-box .word-more').click(function (e) { $(this).show() event.stopPropagation() }) function setTab(index) { preNode.children('.word-more-tab-cur').hide() preNode.children(`:nth-child(${index + 1})`).show() preNode1.children('li').removeClass('cur') preNode1.children(`li:nth-child(${index + 1})`).addClass('cur') } </script> <script> var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?15724838c8620149889a8dfdd225a5df"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script> <script> // 自适应跳转 var sUserAgent = navigator.userAgent.toLowerCase(); var bIsIpad = sUserAgent.match(/ipad/i) == "ipad"; var bIsIphoneOs = sUserAgent.match(/iphone os/i) == "iphone os"; var bIsMidp = sUserAgent.match(/midp/i) == "midp"; var bIsUc7 = sUserAgent.match(/rv:1.2.3.4/i) == "rv:1.2.3.4"; var bIsUc = sUserAgent.match(/ucweb/i) == "ucweb"; var bIsAndroid = sUserAgent.match(/android/i) == "android"; var bIsCE = sUserAgent.match(/windows ce/i) == "windows ce"; var bIsWM = sUserAgent.match(/windows mobile/i) == "windows mobile"; var gourl = window.location.href; gourl = gourl.replace('m.cixu.net', 'www.cixu.net'); if (bIsIpad || bIsIphoneOs || bIsMidp || bIsUc7 || bIsUc || bIsAndroid || bIsCE || bIsWM) { } else { window.location.href = gourl; } document.getElementById('moreMenu').setAttribute("style", "display: none") function showMore() { if (document.getElementById('moreMenu').style.display == 'none') { document.getElementById('moreMenu').setAttribute("style", "display: block"); // .style.display = 'block' } else { document.getElementById('moreMenu').setAttribute("style", "display: none"); // .style.display = 'block' } } $("body").keydown(function () { if (event.keyCode == '13') { var keyword = $("#searchInput").val(); if (keyword) { window.location.href = '/search/fr.html?keyword=' + keyword; } } }); function goSearch() { var keyword = $("#searchInput").val(); window.location.href = '/search/fr.html?keyword=' + keyword; } $('#img').click(function () { var player = $('#player')[0]; player.play(); }) </script>