XML

XML
Ikona formatu
Ilustracja
Rozszerzenia pliku

.xml

Typ MIME

application/xml
text/xml

Producent

W3C

Ostatnia wersja

XML 1.1

Typ

tekstowy, język znaczników

Strona internetowa

XML (ang. Extensible Markup Language, rozszerzalny język znaczników) – uniwersalny język znaczników przeznaczony do reprezentowania różnych danych w strukturalizowany sposób. To język znaczników i format pliku do przechowywania, przesyłania i rekonstrukcji dowolnych danych. Jest niezależny od platformy, co umożliwia łatwą wymianę dokumentów pomiędzy heterogenicznymi (różnymi) systemami i znacząco przyczyniło się do popularności tego języka w dobie Internetu. XML jest standardem rekomendowanym oraz specyfikowanym przez organizację W3C[1][2]. Jest najpopularniejszym obecnie uniwersalnym językiem przeznaczonym do reprezentowania danych.

XML a SGML

XML stanowi podzbiór SGML-a. W założeniach ma pozwalać na wysyłanie, odbieranie i przetwarzanie danych rdzennego SGML w sferze www – ogólnie, zapewniać interoperacyjność między SGML a HTML[1][2]. W przypadku wspólnie obsługiwanych funkcji, dane dokumenty SGML i XML są równoważne. W przypadku używania funkcji niedozwolonych w XML, możliwa jest transformacja dokumentu z zachowaniem danych[3].

XML 1.0 a 1.1

Różnice dotyczące specyfikacji oraz budowy dokumentów[2]:

  • Dokumenty XML 1.0 są niezgodne z dokumentami XML 1.1 (działa to w obie strony). Do 09.01.2005 parsery XML 1.1 powinny akceptować dokumenty XML 1.0, po zmianie, parsery XML 1.1 muszą być przystosowane do obsługi dokumentów XML 1.0[4].
  • W XML 1.0 zasady konstruowania nazw wskazują wszystkie możliwości (wszystko, co nie jest dozwolone, jest zabronione). W XML 1.1 wskazują zabronione możliwości, dopuszczając wszystkie inne (wszystko, co nie jest zabronione (dla konkretnego powodu) jest dozwolone).
  • XML 1.1 z góry zezwala na korzystanie ze znaków, które pojawiają się w wersji 4.0 i każdej nowszej. XML 1.0 zezwala na stosowanie znaków ze standardu Unicode do wersji 2.0, z pewnymi wyjątkami (spowodowanymi nieścisłościami w standardzie Unicode 2.0).
  • Dokumenty XML 1.1 stosują zarówno znaki końca linii Unicode, jak i znaki końca linii zgodne z systemami IBM oraz kompatybilnymi z IBM (znak NEL).
  • XML 1.1 zezwala na korzystanie ze znaków sterujących z zakresu 1-1F (jednak ze względu na ich funkcje, tylko jako referencje znakowe). XML 1.0 nie zezwala na korzystanie z większości z nich.
  • XML 1.1 dokładnie definiuje zestaw ograniczeń dla parsera (tzw. pełna normalizacja), dzięki czemu porównania nazw, atrybutów i zawartości mogą być realizowane poprzez porównanie ciągów binarnych Unicode.
  • W XML 1.1 instrukcje przetwarzania nie mogą się zaczynać ciągiem znaków xml (wielkość liter bez znaczenia) z uwagi na możliwe przyszłe zastosowania. To samo ograniczenie obowiązywało w XML 1.0 do 9.01.2013. Od tej zabronione jest rozpoczynanie instrukcji przetwarzania ciągiem znaków xml- (z dokładnością do wielkości liter)[5].

Poprawność dokumentu

Dokument jest poprawny składniowo (ang. well-formed), jeśli jest zgodny z ogólnymi zasadami XML. Dokument jest dodatkowo poprawny strukturalnie (ang. valid) jeśli jest zgodny z dodatkowymi schematami[1][2]. Najpopularniejszymi językami do tworzenia schematów są DTD, XML Schema oraz RELAX NG[6].

Poprawny składniowo (ang. well-formed) dokument XML powinien być tworzony zgodnie z kilkoma zasadami[1][2]

  • Powinien zawierać deklarację XML, która musi być umieszczona na samym początku pliku oraz musi posiadać atrybut version (dopuszczalne wartości to 1.0 albo 1.1) oraz opcjonalnie atrybuty:
  1. encoding – deklaruje zestaw znaków używanych w dokumencie XML, wartością domyślną jest kodowanie UTF-8 w systemie Unicode.
  2. standalone – określa tryb dokumentu XML, może przyjmować wartość yes lub no. Jeśli ustawimy wartość na yes to będzie oznaczało, że dokument nie zawiera innych plików, które muszą zostać przetworzone wraz z dokumentem. Może to być np. zewnętrzny arkusz stylów lub definicja DTD;
  • Każdy element musi zaczynać się znacznikiem początku elementu, oraz kończyć identycznym znacznikiem końca elementu, wyjątek stanowią elementy puste, czyli takie, które nie zawierają żadnych danych, ani innych elementów, mogą zawierać atrybuty;
  • Nazwy elementów mogą zawierać znaki alfanumeryczne (litery a–z, A–Z oraz cyfry 0–9) oraz dowolny znak z przedziałów: c0-d6, d8-f6, f8-2ff, 370-37d, 37f-1fff, 200c-200d, 2070, 218f, 2c00-2fef, 3001-d7ff, f900-fdcf, fdfo-fffd, 10000-efffffi. Znak dwukropka zarezerwowany jest dla identyfikacji przestrzeni nazw, której nazwa dopisywana jest przed nazwą elementu.
  • Nazwy elementów nie mogą zaczynać się od znaku łącznika (-), kropki, czy cyfry.
  • Elementy można zagnieżdżać w sobie i wtedy każdy element znajdujący się wewnątrz innego elementu jest nazywany „dzieckiem” tego elementu, a element, wewnątrz którego znajdują się inne elementy, zwany jest „rodzicem” tych elementów.
  • Każdy element może zawierać atrybuty, które definiuje się w znaczniku początku elementu.
  • Informacje, które zawiera element, muszą być zapisane pomiędzy znacznikiem początku i końca elementu;
  • W danych, atrybutach oraz nazwach elementów nie mogą pojawiać się niektóre znaki. Przykładem może być znak mniejszości (<), lub ampersand (&). Znaków tych nie można używać, ponieważ parsery XML „widząc” np. znak mniejszości wewnątrz elementu stwierdzą, że jest to początek znacznika i dokument zostanie błędnie zinterpretowany. Specyfikacja XML daje możliwość używania takich znaków z wykorzystaniem predefiniowanych odniesień jednostki. Jeśli więc chcemy wstawić znak mniejszości (<), wpisujemy zamiast niego sekwencję &lt; (ang. less than), natomiast gdy chcemy wprowadzić znak ampersand (&), wpisujemy – &amp;;
  • Jeżeli nie chcemy używać predefiniowanych odniesień jednostek, możemy część danych, które zawierają np. kod html lub xml, zapisać w sekcji danych znakowych, która nie będzie przetwarzana przez analizator składni XML. Znacznik początku sekcji danych znakowych to: <![CDATA[, a znacznik końca: ]]>.
  • W dokumencie XML możemy wykorzystywać komentarze, które zaczynają się znakami: <!--, a kończą: -->. Specyfikacja XML zezwala na wstawianie instrukcji przetwarzania, które są wykorzystywane do przeniesienia informacji do aplikacji. Instrukcje przetwarzania rozpoczynają się znakami: <?, a kończą: ?>.

XML w oknie przeglądarki internetowej

Dokument XML nie precyzuje, jak należy wyświetlać przechowywane w nim dane i większość przeglądarek internetowych przy próbie wyświetlenia go w swym oknie potraktuje go jak zwykły tekst. Istnieją jednak łatwe sposoby na prezentowanie dokumentów XML na stronach internetowych w przyjazny dla użytkownika sposób.

Możliwe jest wyrenderowanie dokumentu przy użyciu stylów CSS. W tym celu należy umieścić na początku dokumentu odpowiednią instrukcję sterującą, na przykład[7][8]:

<?xml-stylesheet href="single-col.css" media="all and (max-width: 30em)"?>

Transformacje XSL umożliwiają konwersję danych do innego formatu, na przykład XHTML. Arkusz stylów jest zbiorem reguł określających sposób postępowania wobec każdego węzła dokumentu podczas transformacji. Na początku przetwarzanego dokumentu XML instrukcję sterującą podobną do poniższej[9][8]:

<?xml-stylesheet type="application/xslt+xml" href="#style1"?>

Zobacz też

Przypisy

  1. a b c d Tim Bray i inni, Extensible Markup Language (XML) 1.0 (Fifth Edition), www.w3.org, 26 listopada 2008 [dostęp 2016-11-09].
  2. a b c d e Tim Bray i inni, Extensible Markup Language (XML) 1.1 (Second Edition), „www.w3.org”, 29 września 2006 [dostęp 2016-11-09].
  3. James Clark, Comparison of SGML and XML, www.w3.org, 15 grudnia 1997 [dostęp 2016-11-09].
  4. Errata in REC-xml11-20040204, www.w3.org [dostęp 2016-11-09].
  5. Errata in REC-xml-20081126, www.w3.org [dostęp 2016-11-10].
  6. Eric van der Vlist, XML Schema, O’Reilly Media, czerwiec 2002, ISBN 978-0-596-00252-7 (ang.).
  7. Simon Pieters, James Clark, Henry S. Thompson, Associating Style Sheets with XML documents 1.0 (Second Edition), 28 października 2010.
  8. a b Blok kodu jest cytatem.
  9. Michael Kay, XSL Transformations (XSLT) Version 2.0, 23 stycznia 2007.

Linki zewnętrzne

Media użyte na tej stronie

XMLSample.png
(c) מאיר מ, CC-BY-SA-3.0
Przykładowy plik XML
XML.svg
Autor: en:User:Dreftymac, Licencja: CC BY-SA 2.5
A graphical depiction of a very simple xml document.
Extensible Markup Language (XML) logo.svg
To jest logo: XML – rozszerzalny język znaczników