XML
Rozbudowa | .xml |
---|---|
Typ MIME | application/xml, text/xml |
PUID | fmt / 101 |
Opracowany przez | Konsorcjum World Wide Web |
Początkowa wersja | 1999 |
Typ formatu | Język znaczników |
Oparte na | Standardowy uogólniony język znaczników , Unicode |
Standard | 1,1 ( 2 th Edition) |
Specyfikacja | Otwarty format |
Stronie internetowej | www.w3.org/XML |
Extensible Markup Language , powszechnie nazywane XML "rozszerzalny język znaczników" w języku francuskim, jest meta-język komputerowy markup rodzajowy, który jest podzbiorem SGML (SGML). Mówi się, że jego składnia jest „rozszerzalna”, ponieważ umożliwia zdefiniowanie różnych języków dla każdego z jego słownictwa i gramatyki, takich jak XHTML , XSLT , RSS , SVG … Jest rozpoznawalny dzięki zastosowaniu znaków szewronów ( <, >) otoczenie nazw tagów. Początkowym celem XML jest ułatwienie automatycznej wymiany złożonych treści ( drzew , sformatowanego tekstu itp.) Między heterogenicznymi systemami informacyjnymi ( interoperacyjność ). Wraz z powiązanymi narzędziami i językami aplikacja XML zasadniczo przestrzega pewnych zasad:
Dan Connolly dodaje Standard Generalized Markup Language do listy działań konsorcjum World Wide Web Consortium, kiedy przystąpiło do niego w 1995 r. Prace rozpoczęły się w połowie 1996 r., Kiedy inżynier Jon Bosak (in) z Sun Microsystems opracowuje statut i rekrutuje pracowników. Bosak zyskuje sławę w małej społeczności ludzi z doświadczeniem zarówno w SGML, jak iw sieci .
XML jest opracowywany przez jedenastoosobową grupę roboczą, wspieraną przez około 150 członków z różnych grup interesu. Dyskusja techniczna odbyła się na wspólnej liście mailingowej, a kwestie zostały rozwiązane w drodze konsensusu lub, w przypadku niepowodzenia, większością głosów grupy roboczej. Współredaktorami specyfikacji byli pierwotnie Tim Bray (in) , który w szczególności prowadził komputeryzację Oxford English Dictionary oraz Michael Sperberg-McQueen (in) , University of Illinois , który był redaktorem naczelnym DTD TEI ; następnie towarzyszył Jean Paoli z firmy Microsoft jako trzeci współredaktor. James Clark pełnił funkcję kierownika technicznego grupy roboczej, w tym współtworzył pusty element „<empty />” i nazwę „XML”. Tim Bray, w swojej specyfikacji XML z adnotacjami, „specyfikacji XML z adnotacjami”, wyjaśnia bardziej szczegółowo kontekst, który umożliwił stworzenie tego standardu. Zapis decyzji projektowych i ich uzasadnień został sporządzony przez Michaela Sperberga-McQueena 4 grudnia 1997 r.
Grupa robocza XML nigdy nie spotykała się twarzą w twarz, projekt był wykonywany za pośrednictwem cotygodniowych e - maili i telekonferencji . Główne decyzje projektowe zapadły w ciągu około 20 tygodni intensywnej pracy między lipcem a listopadem 1996 roku, kiedy to ukazała się pierwsza praca dotycząca specyfikacji XML. Inne prace projektowe trwały do 1997 r., Kiedy to XML 1.0 stał się zaleceniem W3C w sprawie10 lutego 1998.
Cel XML wyjaśniono na początku specyfikacji 10 lutego 1998ze zwrotem wciąż aktualnym dzisiaj: „Jego celem jest umożliwienie przesyłania, odbierania i przetwarzania generycznego SGML w sieci WWW w taki sam sposób, jak jest to obecnie w przypadku HTML ”. SGML to język znaczników używany w branży dokumentacyjnej i wydawniczej. Przyjmując tę składnię dla HTML , Tim Berners-Lee skonfrontował złożoną technologię z coraz większą liczbą użytkowników. Celem XML było zdefiniowanie języka jako ogólnego, ale prostszego niż SGML. W rzeczywistości XML jest podzbiorem SGML.
W świetle minionych lat specyfikacja ta spełniła swój zamierzony cel, XML był szeroko stosowany i promuje interoperacyjność . Dostępność standardowej składni i narzędzi manipulacyjnych znacznie obniża koszt cyklu rozwojowego , umożliwiając oprogramowaniu modyfikację i walidację bez wcześniejszej wiedzy dokumentów napisanych w tych językach. Rzeczywiście, przed pojawieniem się popularnego języka XML opisu danych ogólnego przeznaczenia, projektanci oprogramowania definiowali własne formaty plików lub własne języki do udostępniania danych między programami (z wyjątkiem niektórych standardów zawodowych, takich jak EDIFACT ), które wymagane było każdorazowo zaprojektowanie i zaprogramowanie wyspecjalizowanych parserów. XML umożliwił wykonanie tych zadań za pomocą standardowych narzędzi.
Do sukcesu XML przyczyniło się kilka decyzji.
Przyjęcie UnicodeXML standardowe stwierdza, że wszystkie narzędzia przetwarzania XML musi zaakceptować UTF-8 i UTF-16 znaków kodowania z ISO 10646 , czyli Unicode . Daje to wspólną podstawę do reprezentowania praktycznie wszystkich języków świata. SGML nie zapewnił takiej podstawy, co zwiększa prawdopodobieństwo problemów z konwersją kodowania znaków.
Prostsza gramatykaSGML jest zorientowany na wprowadzanie tekstu strukturalnego przez człowieka i umożliwia korzystanie z wielu skrótów. Na przykład, wersje HTML oparte na SGML pozwalają na pominięcie pewnych znaczników zamykających, skrócenie atrybutów i mieszanie wielkich i małych liter.
<!-- Exemple d'HTML 4, application de SGML, avec attribut minimisé, balises en minuscules et majuscules, balises fermantes optionnelles. --> <UL compact> <LI>Item 1 <li>Item<br>2</Li> </ul>Te możliwości komplikują automatyczne przetwarzanie i są zabronione w przypadku aplikacji XML.
<!-- Exemple d'XHTML, application de XML. --> <ul compact="compact"> <li>Item 1</li> <li>Item<br/>2</li> </ul> Przestrzeń nazwSGML kładzie nacisk przede wszystkim na walidację, zgodność z wiążącym modelem. XML zapewnia bardziej elastyczne wykorzystanie ustrukturyzowanych informacji. Określa sposób współistnienia kilku słowników znaczników w jednym dokumencie poprzez zdefiniowanie przestrzeni nazw .
<?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> BilansXML był szeroko stosowany w informatyce od czasu jego standaryzacji w 1998 r. Następnie, mniej rozwlekłe formaty danych, takie jak YAML i JSON, zaczęły poważnie konkurować.
Paradoksalnie, XML nie zastąpił SGML w gramatyce HTML. Pierwsze wersje HTML (2, 3.2 i 4) są formalnie aplikacjami SGML. Wraz z pojawieniem się XML, HTML 4 został przeformułowany, aby zastosować XML jako XHTML 1.0. Ale chociaż XHTML był początkowo szeroko stosowany przez projektantów stron internetowych , później stracił grunt na rzecz HTML5 , który nie jest aplikacją XML ani SGML. W rzeczywistości, stosując zasadę niezawodności , przeglądarki internetowe zawsze interpretowały HTML za pomocą własnych algorytmów bez uwzględniania SGML lub XML. A HTML5 potwierdził ten stan rzeczy.
Wersja XML 1.0 została wydana dnia 10 lutego 1998.
Wersja XML 1.1 została wydana dnia 4 lutego 2004. Wprowadza ulepszenia w obsłudze różnych wersji Unicode, pozwala na użycie w tekście znaków kontrolnych (z wyjątkiem znaku 0) i organizuje koniec wiersza w sposób zgodny z technologiami IBM.
W3C zaleca, aby interpretery XML rozpoznawały obie wersje, chociaż pierwsza wersja jest znacznie bardziej powszechna niż druga.
XML ma ogólną i rozszerzalną składnię, która pozwala mu na strukturyzację szerokiej gamy treści, ponieważ jego „język” (słownictwo i gramatyka) można przedefiniować.
Jeśli początek tego artykułu został zakodowany w XML, może to wyglądać tak.
<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>W tym kodzie, każdy może identyfikować fragmenty tekstu (np Extensible XML ...) oraz słowa kluczowe oprawione wsporniki ( <, >) <article>, <title>, <para>... Te słowa są zdefiniowane w przestrzeni nazw DocBook . Dokument jest otwierany za pomocą słowa kluczowego <article>i zamykany za pomocą </article>. Zwróć uwagę na ukośnik, który charakteryzuje zamykające tagi. W XML tag zawsze musi być zamknięty . W tym artykule znajduje się tytuł <title>, akapit <para>i akronim <acronym>.
Specyfika XML to wybór szewronów do identyfikacji tagów i obowiązek ich zamknięcia. Słowa kluczowe nie są zdefiniowane przez standard XML, ale przez wybrane słownictwo. W XHTML głównym elementem byłby html ; w XSLT może to być xsl:stylesheetlub xsl:transform. To ilustruje rozszerzalny charakter XML. Nie jest to zbiór nazw zarezerwowanych (np. Echo, for, public, function, class …), a raczej zastrzeżone znaki pozwalające na zdefiniowanie „języka”.
Ten przykład ilustruje inną specyfikę tego formatu. Oprócz SGML kilka innych składni pozwala oddzielić semantyczną definicję informacji (czym jest tytuł, link, sekcja itp.) Od wyglądu, jaki chcemy jej nadać (dziś tytuł jest podkreślony, jutro możemy chcieć w niebieskim). To sprawia, że XML jest doskonałym formatem do przechowywania tekstu lub danych, jak pokazuje poniższe porównanie z innymi formatami.
Oprogramowania , zwłaszcza dla ogółu społeczeństwa, ogólnie skutkować plików . Interoperacyjność i trwałość tych plików jest problemem, który często przychodzi po wydajności. Na przykład, edytor tekstu w formacie historycznym Microsoft Word (* .doc) nie jest czytelny dla człowieka, tekst jest trudny do wyodrębnienia, link z jego strukturą (pogrubienie, kursywa ...) jest trudny do odtworzenia. Teoretycznie tylko oprogramowanie, które je tworzy, jest w stanie go odczytać.
ÐÏ à¡± á > þÿ ! # þÿÿÿ ÿÿ% ð ¿ 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 ÿ [beaucoup d'informations binaires supprimées] ÿ ÿÿÿÿ À F Document Microsoft Word MSWordDoc Word.Document.8 ô9²qAby promować wymianę z innymi edytorami tekstu , Microsoft zaproponował format RTF ( Rich Text Format) w 1987 roku . To nie jest format binarny, polecenia są napisane czytelnym tekstem, ale nie są przeznaczone do pisania przez człowieka.
{\rtf {\f2\fs36\b Extensible Markup Language}\par {\b XML} (Extensible Markup Language, « langage de balisage extensible »)... \par }Stwierdzamy potrzebę obramowania treści znacznikiem (tutaj nawiasy klamrowe {}), aby dołączyć właściwości do tych grup. Na przykład {\ b XML} oznacza, że litery XML są pogrubione, pogrubione : \ b. W przypadku tytułu zarówno ludzie, jak i oprogramowanie nie mogą go zidentyfikować za pomocą „\ f2 \ fs36 \ b”, ten kod w rzeczywistości wskazuje na wygląd akapitu (pogrubiony, duży…). Ten format pokazał, że może działać w oprogramowaniu, ale jego rosnąca złożoność pokazała jego ograniczenia. Jest trudny do rozszerzenia i nie można go wykorzystać do ustrukturyzowania semantyki tekstu.
Donald Knuth , autor The Art of Computer Programming , był kiedyś (w 1977) oburzony jakością druku swoich prac. Następnie opracował TeX , bardzo złożoną składnię przeznaczoną do pisania przez ludzi, szczególnie potężną w przypadku równań matematycznych. RTF odebrał swoje separatory (\, {,}), ale nie swój system makr do faktoryzacji poleceń.
\documentclass[a4paper, 11pt]{article} \title{Extensible Markup Language} \begin{document} \maketitle \end{document}TeX pozostaje standardem jakości publikacji naukowych, zwłaszcza w zakresie formatowania złożonych równań. Pozostaje jednak językiem programowania przeznaczonym do formatowania, zaprojektowanym bardziej z myślą o wyglądzie dokumentów niż do przechowywania lub przesyłania danych.
Składnia wiki również wie, jak oddzielić zawartość od prezentacji.
=={{lang|en|Extensible Markup Language}}== '''XML''' ({{lang|en|Extensible Markup Language}}, « langage de balisage extensible »)…Jednak ta struktura jest tutaj oparta na określonych sekwencjach znaków ( ==, '''). Jednak liczba bezsensownych znaków nie jest nieograniczona. Taki format może być odpowiedni tylko dla jednego typu dokumentu, ale nie jest to składnia ogólna i łatwo rozszerzalna.
XML jest ogólnie przedstawiany jako tekst, oddzielający dwa poziomy: tekst przeznaczony dla ludzi i znaczniki przeznaczone dla maszyn. Strukturyzacja tego tekstu za pomocą znaczników tworzy model komputerowy. Z formalnego punktu widzenia dokument XML jest drzewem , które zawiera różne typy węzłów (tekst, elementy, atrybuty, komentarze…). Wnikanie w teoretyczne szczegóły tej struktury drzewa nie jest konieczne, aby napisać dobrze sformułowany XML. Warto jednak zrozumieć ogólną zasadę, ponieważ to właśnie ten model wyjaśnia błędy składniowe. W tej sekcji zostaną przedstawione różne składniki modelu XML, podkreślając ograniczenia wynikające z ich definicji i przedstawiając różne typy błędów (zniekształcenia), które powodują powstanie zniekształconego dokumentu. Zniekształcony dokument nie jest już XML. Przerywa cały łańcuch przetwarzania. Ten brak poprawiania błędów może czasem zaskakiwać i zniechęcać początkujących, ale to właśnie ten rygor zapewnia jakość formatu XML (zwłaszcza w porównaniu z SGML). Na szczęście, jak każdy inny język komputerowy, oprogramowanie do edycji pomaga użytkownikom uniknąć tych błędów.
<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet href="transformation.xsl" type="text/xsl"?> <?mode ecran?> <?instruction pour le traitement?> <!-- Commentaire --> <ex:collection xml:lang="fr" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns="http://www.w3.org/1999/xhtml" xmlns:ex="http://exemple.org" > <élément>Texte</élément> <dc:title>Astérix le Gaulois</dc:title> <ex:livre attribut="valeur" type="BD"> <dc:title>Astérix chez les Belges</dc:title> <!-- élément répété --> <dc:creator>René Goscinny</dc:creator> <dc:creator>Albert Uderzo</dc:creator> <dc:description> <b>Astérix chez les Belges</b> est un album de <a href="http://fr.wikipedia.org/wiki/Bande_dessinée">bande dessinée</a> de la série Astérix le Gaulois créée par René Goscinny et Albert Uderzo. <br /><!-- élément vide --> Cet album publié en 1979 est le dernier de la série écrite par René Goscinny. </dc:description> </ex:livre> </ex:collection>
Dokument XML ma zawsze jeden i tylko jeden katalog główny, węzeł dokumentu . W składni eksploracji drzewa XML, XPath , węzeł dokumentu jest skracany z ukośnikiem /, podobnie jak korzeń drzewa systemu plików Unix. Katalog główny może opcjonalnie zawierać elementy potomne typu komentarza lub instrukcji przetwarzania, musi zawierać jeden i tylko jeden element.
<?xml version="1.0" encoding="UTF-8"?> <item>Premier élément racine</item> <item>Deuxième élément racine = malformation</item> Zniekształcenie Powyższy plik nie jest dobrze sformułowanym dokumentem XML, ponieważ zawiera więcej niż jeden element główny.
Do węzła elementu odnosi się kwalifikowana nazwa w przestrzeni nazw ( <espace:élément/>). Nazwa ta nie może zawierać !"#$%&'()*+,/;<=>?@[\]^`{|}~lub przestrzeń i nie może rozpocząć -.lub liczby. Element może zawierać atrybuty i większość innych węzłów: tekst, elementy itp. (z wyjątkiem węzła dokumentu). Elementy mogą być zagnieżdżane, ale nie mogą się przecinać. Ta formalna definicja leży u podstaw osobliwości XML w porównaniu z innymi formatami:
Powtarzalne Ta sama właściwość może się powtórzyć. Przykład pokazuje, jak wskazać, że książka ma wielu autorów <dc:creator>. W formacie tabelarycznym, ze zdefiniowaną liczbą kolumn, nie jest to niemożliwe, ale jest mniej sprecyzowane. Zamówione Zachowana jest kolejność elementów. Bez względu na użyty język, narzędzie XML musi odróżnić pierwszy autor sekundę (np XPath , /ex:collection/ex:livre/dc:creator[1] = "René Goscinny", /ex:collection/ex:livre/dc:creator[2] = "Albert Uderzo"). Hierarchiczne Elementy XML są zagnieżdżone. To sprawia, że ten format jest szczególnie odpowiedni do reprezentowania drzew. Przykład jest ograniczony do dwóch poziomów ( /ex:collection/ex:livre), zbioru z tytułem ( Astérix le Gaulois ) i przykład pracy z tej kolekcji ( Astérix chez les Belges ). XML umożliwia pełną rekurencję. Na przykład książkę lub pracę magisterską można sformatować bardzo ekonomicznie za pomocą jednego elementu <section>. Część 2.3.5 będzie odpowiadać strukturze zagnieżdżenia XML /section[2]/section[3]/section[5]. Mieszalny XML to coś więcej niż format danych , to format dokumentu, który umożliwia mieszanie tekstu i elementów, na przykład w celu przedstawienia tekstu sformatowanego. W przykładzie tekst opisu <dc:description>został wzbogacony o znaczniki XHTML (pogrubienie <b>, link <a>). Wykwalifikowany Kwalifikacja nazw przyczynia się do semantycznej precyzji oznaczanej treści. Notacja xmlns="URI"lub xmlns:prefix="autre/URI", w przypadku dziedziczenia hierarchicznego, umożliwia dołączenie wszystkich nazw do identyfikatora URI , a tym samym potencjalnie do dokumentacji. Wady rozwojowe Kilka przykładów nieprawidłowego formatu XML:Tag jest wygodnym nazwa na oznaczenie konstrukcji pomiędzy dwoma nawiasach kątowych ( <, >) w pliku XML. Rozróżnimy <élément attribut="valeur">tagi otwierające, tagi zamykające </élément>(bez atrybutów i zaczynające się ukośnikiem) oraz tagi puste <élément attribut="valeur"/>(z możliwymi atrybutami i kończące się ukośnikiem). Tagi nie powinny być mylone z elementami. Te notacje służą do rozgraniczenia elementów (a także ich atrybutów), ale tagi nie są węzłami w abstrakcyjnym modelu dokumentu.
Węzeł tekst nie ma dzieci, to jest zawsze zawarty w elemencie. Tak więc, w przypadku tekstu mieszany (np :) <p>du texte en <b>gras</b> dans un paragraphe</p>, nie jest tekst, który zawiera pogrubienie, lecz element nadrzędny <p>, który zawiera kilka dzieci: węzeł tekstu węzeł Element <b>a węzłem tekst (na przykład: p/node()[3]=" dans un paragraphe", p/b/node() = "gras").
Kodowanie Domyślnie tekst jest traktowany jako Unicode ( UTF-8 ). XML pozwala na określenie innych kodowań w prologu ze względów historycznych. Spacje W XML spacje i podziały wierszy są równoważne, innymi słowy, dokument może stracić wcięcie, pozostając identyczny dla procesów, z wyjątkiem określonych instrukcji (przykład: blok wstępnie sformatowany z atrybutem @xml:space="preserve"). Wady rozwojowe Jak każdy język komputerowy, XML opiera się na znakach, które mają specjalne znaczenie dla maszyny. Siłą XML jest zmniejszenie liczby tych znaków do minimum, tak aby tekst miał pierwszeństwo przed metatekstem (pierwszeństwo danych nad instrukcjami). Gdy tylko parser XML (np. Przeglądarka internetowa) napotka otwierającą się chevron ( <), następujące po niej znaki są interpretowane jako znaczniki. To oczywiście stwarza problemy związane z nierównością matematyczną if (a < 10) print("Unité"). Ponieważ znacznik < 10)…nie ma poprawnej nazwy elementu (obecność spacji, zaczyna się od liczby), parser XML zgłosi błąd i zatrzyma się, nie próbując być mądrzejszym. Jest to problem we wszystkich językach komputerowych, które następnie wprowadzają znaki ucieczki . Wymagany jest co najmniej jeden znak, aby wskazać, że następujące znaki muszą być interpretowane w inny sposób. W XML jest rolą znaku ampersand ( &), który wprowadza encje . Encja to nazwa XML ujęta ampersandem i średnikiem. Ta nazwa ma takie same ograniczenia jak dla elementów (bez spacji, zwłaszcza liter…). W węźle tekstowym znak gorszej jakości należy zastąpić znakiem <( mniejszy niż „gorszy” w języku francuskim). Nagle znak ampersand również uzyskuje specjalny status i również musi zostać usunięty. <sujet>Montaigne & La Boétie</sujet>, ten tekst spowoduje błąd XML, ponieważ & La Boétienie jest poprawnie sformułowaną jednostką. Znak ampersandy węzła tekstowego należy zastąpić jednostką &( ampersand , „ampersand” w języku francuskim). Wspomnijmy tutaj o trzech innych jednostkach niezbędnych do XML-a >( większe niż „Supérieur” po francusku) for >, "( quote , „guillemet” po francusku) for ", '( apostrof ) for '.Atrybutem jest nazwa i wartość. Nazwa atrybutu ma takie same ograniczenia i możliwości kwalifikacji, jak nazwa elementu. Wartością jest tekst bez elementu (lub innych węzłów). Atrybut jest zawsze przenoszony przez element (znacznik otwierający). Wartość może być pusta <element attribut=""/>, ale nie pusta <element attribut>(takie zapisywanie było dozwolone w SGML , nadal jest czasami napotykane w HTML , ale nie jest akceptowane w XML).
Atrybut jest unikalny. Powtórzenie atrybutu o tej samej nazwie w tym samym elemencie spowoduje błąd interpretera XML. Kolejność atrybutów nie jest znacząca i może nie zostać zachowana w niektórych procesach. <element attribut1="valeur1" attribut2="valeur2"/>i <element attribut2="valeur2" attribut1="valeur1"/>są równoważne dla interpretera XML, chociaż są napisane inaczej.
Wady rozwojowe <é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>Wewnątrz tagu (między otwierającym i zamykającym szewronem) zamykający szewron i cudzysłowy mają specjalne znaczenie w rozgraniczaniu wartości atrybutów i na końcu tagu otwierającego. Dlatego te znaki muszą zostać usunięte. W tym celu, XML stanowi "dla "i >dla jednostek >.
W XML komentarze są rozdzielane znakami <!--i -->. Treść komentarza nie będzie interpretowana.
<!-- Cet <élément> n'est pas fermé mais cela est autorisé dans un commentaire -->.
Wady rozwojowe Ciąg znaków --nie może pojawić się w treści komentarza (interpreter XML uważa ten sygnał za zapowiedź końca komentarza).
W XML prolog składa się z deklaracji XML <?xml version="1.0" encoding="UTF-8"?>i deklaracji typu dokumentu (DOCTYPE). Deklaracja XML jest obowiązkowa od wersji 1.1. Deklaracja DOCTYPE miała wielkie znaczenie w SGML. Dołącza dokument przetwarzany przez interpretera do jego schematu ( DTD , Definicja typu dokumentu , „ Definicja typu dokumentu ”) w celu jego walidacji i interpretacji określonych skrótów (encji). Obecnie istnieje kilka języków walidacji, a czasem kilka sposobów ich dołączania. Deklaracja DOCTYPE nie ma już takiego samego znaczenia.
Instrukcja przetwarzania jest trochę mniej używanych możliwość XML niż w czasie SGML. Jest to szczególny znacznik, który otwiera się otwierającym szewronem i znakiem zapytania, a zamyka znakiem zapytania i zamykającym szewronem <?clé valeur?>. Litery obok otwierającej się szewronu tworzą klucz do pierwszej spacji. Sekwencja może zawierać spacje, znaki interpunkcyjne i tworzyć wartość. Wartość ta nie ma narzuconej przez XML składni, to aplikacje interpretują ją na swoje potrzeby. Jednak W3C ustandaryzowało użycie instrukcji przetwarzania do powiązania arkusza stylów z dokumentem XML, ale możliwe są inne zastosowania. Można je wstawiać w dowolnym miejscu między znacznikami (ale nie w wartości atrybutu ani między nawiasami ostrymi w środku znacznika). Mogą przekazywać instrukcje maszynom, które będą używać tego XML, bez traktowania tej treści jako informacji uporządkowanej przez znaczniki. Na przykład instrukcje przetwarzania nie będą wyświetlane przez przeglądarkę, z drugiej strony będą modyfikować swoje zachowanie podczas przetwarzania (i wyświetlania) tych informacji XML. Edytor XML może również użyć tego środka do powiązania pliku XML z jego schematem.
<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet href="tei2html.xsl" type="text/xsl"?> <?xml-model href="tei.rng" type="application/xml" schematypens="http://relaxng.org/ns/structure/1.0"? > <?erreur?> <TEI xmlns="http://www.tei-c.org/ns/1.0"> <!-- … --> </TEI>Sekcja ucieczka<![CDATA[…]]> umożliwia dowolny tekst, aby być zawarte ze wszystkimi znakami specjalnymi XML <>&, bez konieczności ucieczki te znaki z podmiotów. Są często używane w dokumentach zawierających składnię komputerową z wieloma znakami szewronów i ampersandów (np. JavaScript ). Te sekcje ucieczki zachowują oryginalny tekst, zachowując zgodność strumienia XML.
<script><![CDATA[ if (chars > 140 && mode == tweet) { div.innerHTML = '<b>Attention !</b>, le {{140e}} caractère est dépassé !'; } ]]></script>Dobrze sformułowany dokument przestrzega formalnych ograniczeń określonych powyżej, nie ma żadnych zniekształceń. W tym momencie XML nie jest językiem, ponieważ nie ma słownictwa i ma bardzo małą gramatykę, byłby bardziej interpunkcją lub lepiej metajęzykiem. Powyższe specyfikacje nie wykluczają tworzenia absurdalnych struktur, których aplikacje nie mogą wykorzystać.
<phrase titre-livre="XML idiot"> <paragraphe> <chapitre> <toto> <livre> <titi>Informatique sans bon sens n’est que ruine de l'âme et perte de temps.</titi> </livre> </toto> </chapitre> </paragraphe> </phrase>Generalnie tagi XML nie są wymyślane swobodnie, ale zgodnie z zaleceniami schematu w składni komputerowej ( DTD , Relax-NG , Schematron itp.), Który definiuje słownik nazw i atrybutów elementów, a także gramatykę ich artykulacje. Kiedy dokument XML deklaruje, że postępuje zgodnie ze schematem i jest z nim zgodny, mówi się, że jest prawidłowy . Mówimy również „waliduj na podstawie diagramu”. „Uaktualnij” oznacza poprawianie błędów w dokumencie XML znalezionym przez schemat. Celem następnej sekcji jest pokazanie liczby języków, w których można używać interpunkcji XML według różnych schematów.
SGML był składnią ogólną, umożliwiającą definiowanie języków specjalistycznych (np. HTML ), ale był przeznaczony głównie do znakowania dokumentów. Upraszczając SGML, projektanci XML planowali rozszerzyć użycie nawiasów kątowych (<>) na wiele innych zastosowań, na przykład programowanie. Pierwsze języki oparte na XML przez W3C wyznaczają kilka kierunków użycia.
Kilka miesięcy po wydaniu XML jest więc używany do kodowania danych, transformacji programów, reprezentowania drukowalnego obiektu i definiowania schematu dokumentu XML. To zapowiada różnorodność zastosowań tej składni. Kilka lat później katalog jest znacznie większy i obejmuje takie zastosowania, jak:
Kategorie te pozwalają na przybliżoną klasyfikację języków na podstawie XML (lub języków akceptujących wyrażenie XML). Poniższa lista języków określa kilka ważnych specyfikacji w świecie XML. Trafienia i recenzje pokazują również, do czego XML jest dobry i gdzie jest mniej odpowiedni.
Dokument znaczników to początkowy kod XML zadania. DTD SGML publicznej jako TEI i DocBooku przyjęły. XML mógł pozwolić na pojawienie się wielu innych schematów. Raczej obserwujemy pojawienie się wyspecjalizowanych słowników, które można łączyć, na przykład modularyzacja XHTML:
XML stał się formatem referencyjnym do wymiany danych , zwłaszcza metadanych . Przykład transferu informacji między relacyjnymi bazami danych zilustruje zalety i ograniczenia tego formatu w tym zastosowaniu.
Eksportowanie tabeli można wykonać w formacie CSV . Ale ten format szybko dochodzi do ograniczeń na dużą skalę (Internet). Nie jest dokumentowana samodzielnie (kodowanie tekstu, separatory, kolejność i nazwa kolumn). Wymaga zewnętrznej dokumentacji, która rzadko jest zautomatyzowana między partnerami. Co zrobić, gdy tabele źródłowa i docelowa nie mają identycznej struktury? Z tego powodu można preferują wymianę w SQL (w tym samym czasie definiowania danych języka , dane manipulacji językowej i danych języka sterowania ). Jednak pomimo wielu wysiłków standaryzacyjnych SQL niesie ze sobą duże ryzyko niekompatybilności między implementacjami. XML to solidniejsze rozwiązanie. Możesz zobaczyć, jak skuteczne jest to w Internecie dzięki dystrybucji treści . Nie ma znanego przykładu wymiany metadanych na tak wielu klientach i serwerach.
Gadatliwość? - W porównaniu z eksportem tabeli do formatu CSV, XML replikuje nazwę kolumny dla każdej komórki (raz dla atrybutu, dwa razy dla elementu). Rozmiar wygenerowanego pliku jest większy niż rozmiar pliku CSV. W kontekstach, w których przepustowość jest droga (na przykład telefonia komórkowa ), nie wydaje się to stanowić problemu ( WML ), ponieważ te powtórzenia kompresują się bardzo dobrze ( ZIP ).
Ciężkie przetwarzanie? - Przetwarzanie XML wymaga wyspecjalizowanych bibliotek (interpreter XML). To naprawdę nie dodaje dodatkowego czasu na rozwój, przynajmniej dla wyszkolonych zespołów. W przypadku małych zadań parser linii do wiersza jest czasami łatwiejszy. Ale jeśli dane mają stać się bardziej złożone i być wymieniane na szerszą skalę, lepiej od samego początku wybrać XML.
XML: dane czy dokument? - Ta sekcja jest okazją do rozróżnienia między danymi XML a dokumentem XML . Nie jest to kwestia różnicy w składni, ale w zastosowaniach, narzędziach i społecznościach użytkowników. Według SGML, XML pochodzi z dokumentu . Krytykowano go na przykład za brak (natywnie) silnego pisania na klawiaturze . W SQL spotykamy się z podobnym, ale odwrotnym ruchem . Pierwotnie jest to format danych, coraz częściej wymaga się przetwarzania tekstu. ( LAMPA CMS ). Jeśli chodzi o XML, sprzeciw ten znajduje odzwierciedlenie w kierunku prac specyfikacyjnych (typy danych XML Schema , XPath 2.0 , XSLT 2.0 ) z reakcjami ze świata dokumentu ( Relax NG ).
Pełny proces XML obejmuje etap sprawdzania poprawności dokumentu. Rolą schematu jest zdefiniowanie tych reguł ważności. Czy ten schemat musi być w formacie XML? Pytanie nie pojawiło się w SGML , który znał głównie DTD , składnię tekstową. Napotkane ograniczenia dotyczyły głównie dokumentacji deklarowanych elementów i atrybutów (w) . Dokumentacja jest bardzo ważna dla powodzenia standardu XML. Te z Docbook lub TEI stanowią kompletne książki, nawet w wersji drukowanej.
Te społeczności z niecierpliwością oczekiwały, jak będzie wyglądał schemat XML . Wiele pojawiających się narzędzi do automatycznej dokumentacji wraz z pojedynczym zestawem XSLT demonstruje wartość XML jako języka opisu formatu dokumentu . Jednak w przypadku prostych rzeczy schemat XML okazał się trudny. Czy to efekt zbyt wielu ustępstw? Nadal, pomimo wielu wydawców za W3C , społeczność jest bardzo zainteresowany Relax NG , przez Jamesa Clarka . Model ten akceptuje składnię XML, a od 2003 roku oferuje również zwartą, tekstową formę, która nie jest XML.
Innymi słowy, nie ma już jednej odpowiedzi. Schemat XML można zdefiniować w słowniku XML lub w inny sposób. Obecna ewolucja jest w stanie połączyć kilka języków schematu, w szczególności silne pisanie o XML Schema , z XPath wzorców dla Schematron w Relax NG .
XML jest często chwalony za jego zdolność do oddzielania treści, prezentacji i przetwarzania. Uważaj, XML umożliwia takie rozdzielenie, ale nie zapobiega pomieszaniu wszystkiego, jak w przypadku niektórych stron XHTML w Internecie. W każdym razie ten rozszerzalny format udowodnił, że może zachować prezentację dokumentów dla najbardziej wymagających zastosowań. Dowodem na to jest różnorodność aplikacji, które go wykorzystują.
W wielu aplikacjach czasami wygodnie jest opracować specjalistyczny język do użytku lokalnego. Ze schematem dialekt XML ma gramatykę (podobnie jak BNF ). Jako kompilator potrzebujesz na przykład transformacji XSLT, która generuje kod Java , tak jak w przypadku biblioteki tagów ( taglibs ). Ten przykład pokazuje, jak składnia XML jest używana do definiowania języków programowania.
W teorii struktura drzewa XML umożliwia przedstawienie hierarchii programu obiektowego lub zagnieżdżenia instrukcji języka imperatywnego . W praktyce pętle są przypadkiem granicznym, w którym XML staje się zbyt rozwlekły. Z drugiej strony pismo to jest znakomicie przystosowane do deklaratywnych składni (konfiguracja, definicja interfejsu ), a nawet popularyzuje algorytmy funkcjonalne ( XSLT , logika aplikacji internetowej).
W rezultacie w oprogramowaniu znajduje się coraz więcej XML. W niektórych frameworkach do tworzenia stron internetowych można zbudować kompletną i złożoną aplikację, edytując tylko XML:
Protokół określa wymianę treści i instrukcji między klientem a serwerem. HTTP to model protokołu (który nie jest XML, ale tekstowy). XML jest używany do oznaczania treści i pisania instrukcji programowych. Uniwersalizacja połączenia HTTP jako interpretacji XML wyjaśnia, dlaczego XML staje się powszechnym rozwiązaniem do tworzenia nowego protokołu.
Języki związane z XML to składnie, które nie są w XML, ale są bardzo dołączone do XML. CSS dobrze zilustruje tę koncepcję. Może być zawarty w atrybucie ( @xhtml:style), elemencie ( <xhtml:style>) lub połączony z dokumentem XML za pomocą instrukcji przetwarzania ( <?xml-stylesheet href="common.css" type="text/css"?>). XPath dostarcza innego przykładu specyfikacji całkowicie przeznaczonej dla XML, ale która jest dokładnie pozbawiona elementów ani atrybutów, aby można ją było skojarzyć z językiem XML ( XSLT ).
XML okazał się bardzo ogólną składnią znaczników odpowiednią do wielu zastosowań. Sukces ten zawdzięczamy konkurującym implementacjom wielu precyzyjnie określonych interfejsów programistycznych (API). Proces XML jest zasadniczo łańcuchem transmisji informacji. W przypadku edycji dokumentów XML możemy wyodrębnić następujące niemal kanoniczne kroki:
Ta kanoniczna sekwencja kroków pokazuje, co może być potokiem ( potokiem ) standardowego procesu XML.
Organizacja, która ma już swój system informacyjny, nie oparty na XML, może się zastanawiać, jak stworzyć XML. Istnieje wiele sposobów tworzenia XML:
Aby wejść do procesu, dokument XML musi posiadać dedykowanego interpretera. Najpopularniejsze parsery to:
Istnieje wiele innych, w szczególności w Javie, dostosowanych do różnych konkretnych przypadków: otwieranie prostszego API, akceptowanie źle sformułowanych dokumentów, takich jak HTML, prostsze przetwarzanie (szczególnie w przypadku długich dokumentów).
Po „xmlizacji” dokument jest dostępny w różnych językach, zgodnie ze standardowymi interfejsami API. Zasadniczo rozróżnia się podejście oparte na pamięci, takie jak DOM , i podejście przepływowe (generowanie zdarzeń), takie jak SAX .
Istnieją inne interfejsy API, takie jak JDOM , dom4J ( Java ) lub StAX .
Dokument XML może składać się z kilku plików, które są gromadzone w czasie powyższej analizy. Obecnie istnieją dwa konkurujące ze sobą standardy:
Preferowane są teraz specyfikacje i implementacje xinclude, chociaż można dyskutować o ich przyjęciu.
Rozważ przykład katalogu produktów, aby zobaczyć efekty obu. Będziemy mieć każdy produkt w postaci dokumentu XML i dokumentu głównego, który zgromadzi wszystkie odniesienia. W jednostkach wyjaśniono to w następujący sposób.
<!DOCTYPE catalogue [ <!ENTITY article001 SYSTEM "articles/article001.xml"> <!ENTITY article002 SYSTEM "articles/article002.xml"> ]> <!-- Un exemple d'inclusion par résolution d'entité externe --> <catalogue xmlns="http://exemple.net/ns"> <titre>catalogue</titre> &article001; &article002; </catalogue>Zwróć uwagę, że jednostki są deklarowane w nagłówku dokumentu, a następnie wywoływane przez zapis typu &entité;. Ta składnia jest początkowo przeznaczona na skróty, aby rozłożyć na czynniki pisanie zmiennych, takich jak nazwa produktu lub firma. Mechanizm ten został rozszerzony, aby rozwiązać problemy z kodowaniem w ASCII przed Unicode . To są jednostki znaków, takie jak é= &#E9;= é. W przypadku włączenia pliku, wymaga to dwóch deklaracji: łącza i jego wywołania.
Rozdzielczość a priori inkluzji może mieć wady, w szczególności w przypadku bardzo ciężkich dokumentów głównych, z którymi można chcieć pracować bez ich zależności. Xinclude umożliwia to, a także automatyczne generowanie tych relacji ( XSLT ).
<!-- Un exemple d'inclusion par xinclude --> <catalogue xmlns="http://exemple.net/ns" xmlns:xi="http://www.w3.org/2001/XInclude" > <titre>catalogue</titre> <xi:include href="articles/article001.xml"/> </catalogue>XML może mieć inną formę niż plik, na przykład w natywnej bazie danych XML . Czysto drzewiasta natura formatu potencjalnie pozwala na tworzenie bardzo dużych struktur, nie tylko połączonych łańcuchami jak bardzo długi szyk, ale także przegubowych z gałęziami i podgałęziami.
Walidacja to automatyczna operacja sprawdzająca zgodność dokumentu XML z jego schematem. Jego celem jest dostarczanie wiadomości, ponieważ w rozdziale 5 nie ma tytułu lub data produkcji jest w przyszłości . Dokładność i łatwość obsługi tego sprawdzenia zależy od użytej składni .
W SGML walidacja była zawsze wykonywana przed wprowadzeniem dokumentu XML do procesu. Rozmawialiśmy o sprawdzaniu poprawności parsera. Był wtedy tylko jeden język walidacji ( DTD ) zadeklarowany w jeden sposób wewnątrz dokumentu XML (deklaracja DOCTYPE , typ dokumentu). Praktyka pokazała, że walidacja nie zawsze jest konieczna, a nawet nieskuteczna. W innych przypadkach przydatnych może być kilka kroków walidacji, na przykład jeden do sprawdzenia struktury drzewa XML, a drugi do sprawdzenia łączy. Ewolucja zmierza w kierunku odrębnego etapu walidacji, zadeklarowanego poza dokumentem i zarządzanego zgodnie z potrzebami oprogramowania.
Obecne rozmieszczenie bibliotek sprawia, że walidacja XML jest natywnie dostępna dla większości systemów i w większości języków programowania :
Transformacja to etap procesu XML, który pobiera dokument w określonym schemacie i przenosi go do innej przestrzeni nazw. Lub dokument tekstowy, który zawiera tylko treść. Konieczne będzie dodanie do niego przynajmniej nawigacji przed emisją w Internecie; będziemy również potrzebować wersji drukowanej ( PDF ). Łatwość przekształcania dokumentu XML, szczególnie w przypadku XSLT , jest ważnym powodem wyboru tego formatu.
W 2001 roku James Clark , ekspert od XML i SGML , został zapytany : Jaki będzie następny krok dla XML? „Jaki jest następny krok w przypadku XML”? Na początku odpowiedział, że to tak, jakby zapytać, jaki jest następny krok w przypadku plików tekstowych lub rozdzielanych liniami. Według niego, zaledwie 3 lata później nowość miałaby pochodzić już nie z formatu, ale z aplikacji. W rzeczywistości w 2015 roku nie nastąpiła istotna zmiana w specyfikacji XML.
XML umożliwia reprezentowanie wielu różnych struktur. Na przykład przyczynił się do uogólnienia i standaryzacji struktur drzewiastych, tak aby można je było traktować jako komputeryzowalne jak tabele ( SQL ). Jednak tagi nie usunęły całej składni tekstowej. Na przykład widzieliśmy uogólnienie JSON , które umożliwia reprezentację i wymianę danych hierarchicznych, takich jak obiekty (w sensie komputerowym) . Popularność JSON, która z pewnością pozostanie na długo, pozwala lepiej zdefiniować specyfikę XML. JSON ściśle oddziela strukturę drzewa od danych zawartych w liściach. Model ten prawie nie reprezentuje tekstu sformatowanego, na przykład zindeksowane imię i nazwisko pojawia się w środku zdania. JSON nie oferuje standardowej składni do walidacji i dokumentacji, często są to struktury ad hoc . Siłą XML, która nie jest najbardziej pożądana poza przetwarzaniem dokumentów, jest walidacja, która pomaga standaryzować typy dokumentów na dużą skalę, choćby tylko w sieci Web i HTML.
Uwagi:
Bibliografia :
Inne technologie i teorie interesujące dla XML: