XML/Wprowadzenie

Z Wikibooks, biblioteki wolnych podręczników.
< XML
Przejdź do nawigacji Przejdź do wyszukiwania

Czym jest XML?[edytuj]

Xml jest językiem wywodzącym się z SGML (jest aplikacją języka SGML).

Co robi? W zasadzie to nic. Służy do przechowywania danych. Tutaj jednak nadal nie mamy nakierowania, ponieważ standard nie mówi nam w żaden sposób, jak mamy przechowywać dane. Opisuje tylko pewne sposoby budowy dokumentów, lecz nie na poziomie abstrakcji (jak w językach programowania), a na poziomie "technicznym", takim jak możliwe do stosowania znaki, specyficzne ciągi znaków itd. Podane są definicje zgodne z SGML.

Neutralność języka XML jest tak wysoka, że nawet istnieją języki służące do opisu dokumentów XML, będące aplikacją samego XML (np. XML Schema).

W aspektach dotyczących abstrakcji, pomagają dodatkowe standardy takie jak przestrzenie nazw w XML, internacjonalizacja, optymalne kompresowanie do formatów binarnych, obiektowy model dokumentu, xPath i inne.

HTML (HTML 4 oraz wcześniejsze są aplikacją SGML-a. HTML 5 zawiera własną serializację, lecz już oficjalnie niebędącą aplikacją SGML) i XML wywodzą się z tego samego standardu, więc mają podobną składnię. Składają się one z elementów, to określenie należy rozumieć dosłownie. Elementy zapisuje się w postaci znaczników, między którymi umieszcza się treść. W znacznikach otwierających można umieszczać atrybuty elementów.

Krótko opisany jest w kursie w3schools[1]:

  • XML jest skrótem od eXternsible Markup Language (rozszerzalny język znaczników).

  • XML jest językiem znaczników podobnie jak HTML.

  • XML został zaprojektowany do organizacji i przechowywania danych.

  • XML został zaprojektowany do bycia samo-opisującym się.

Budowa i funkcje[edytuj]

eXtensible Markup Language

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<doc>
<ustawienie>
<src>settings/1.ini</src>
<usr>gość</usr>
</ustawienie>
<ustawienie>
<src>settings/2.ini</src>
<usr pusty="tak" />
</ustawienie>
</doc>

HyperText Markup Language

<!doctype html>
<html>
<head>
<link rel="stylesheet" href="CSS/styl.css" />
<script type="application/javascript" src="JS/jquery.min.js" />
<meta charset="UFT-8" />
<title>Strona HTML5</title>
</head>
<body>
<p>Widzisz podobieństwa i różnice?</p>
</body>
</html>

Jak widać, XML jest bardzo podobny do HTML-a. Dzięki temu opanowanie tego języka jest prostsze. I działa to w obie strony jeśli nie znasz języka HTML (co nie przeszkodzi Ci w rozumieniu informacji zawartych w tym podręczniku), łatwiej będzie ci z nim zacząć.

Patrząc na kod XML, można zauważyć dwie rzeczy:

  1. Dokument zaczyna się jakąś instrukcją
  2. Dokument zawiera jakieś nieznane znaczniki

Właśnie to jest istotą samoopisywania się i "nicnierobienia" przez XML. Znaczniki same w sobie nie oznaczają nic, opisują tylko jakiś element. Warstwę abstrakcyjną ma utworzyć oprogramowanie przetwarzające taki dokument.

W dodatku, widać coś innego zamiast DTD HTML. Jest to prolog, pierwszy element, który informuje aplikację o typie dokumentu XML.

Jakie są inne metody przechowywania danych?[edytuj]

Jest wiele alternatyw, ale wiele z nich ma pewne konwencje. Większość baz danych przechowuje dane w pewnym modelu. np. relacyjne bazy danych przechowują dane w relacjach prezentowanych jako tabele. W dokumentach "płaskich", struktury nie ma. Istnieją jednak dość podobne do XML metody przechowywania danych.

YAML[edytuj]

Rozwinięcie skrótowca (choć rekursywne) jest bardzo wymowne: YAML Ain't Markup Language. Ten język definiuje prostszą do zrozumienia dla człowieka strukturę, zawiera predefiniowane typy danych, zagnieżdżanie opiera się na wcięciach i znakach nowej linii.

Przykład kodu, który będziemy porównywać[2]:

---
firstName: John
lastName: Smith
age: 25
address: 
  streetAddress: 21 2nd Street
  city: New York
  state: NY
  postalCode: 10021
phoneNumber: 
- type: home
  number: 212 555-1234
- type: fax
  number: 646 555-4567
gender: 
  type: male

JSON[edytuj]

Zgodnie z nazwą (JavaScript Object Notation) jest zapisem obiektów z języka JavaScript. Z tego stanu rzeczy, tak jak YAML, zawiera predefiniowane typy danych.

Przykład kodu analogiczny do podanego w sekcji YAML[3]:

{
  "firstName": "John",
  "lastName": "Smith",
  "age": 25,
  "address": {
    "streetAddress": "21 2nd Street",
    "city": "New York",
    "state": "NY",
    "postalCode": "10021"
  },
  "phoneNumber": [
    {
      "type": "home",
      "number": "212 555-1234"
    },
    {
      "type": "fax",
      "number": "646 555-4567"
    }
  ],
  "gender": {
    "type": "male"
  }
}

Formaty binarne[edytuj]

Istnieje cała masa formatów binarnych, lecz te są poza zakresem naszych rozważań. Sam XML nie nadaje się dobrze do przenoszenia danych binarnych (sam XML, ale też i wyżej podane alternatywy opierają się na znakach Wikipedia:Unicode).

Przypisy

  1. Lista jest tłumaczeniem z angielskiego, oryginalnej listy z sekcji What is XML, z tej strony: http://www.w3schools.com/xml/xml_whatis.asp
  2. Kod pochodzi z artykułu YAML z Wikipedii, dokładniej z wersji z 01:27, 11 lis 2016
  3. Kod pochodzi z artykułu JSON z Wikipedii, dokładniej z wersji z 13:31, 9 lis 2016