Get the code: learnxml.xml
XML (Extensible Markup Language) to rozszerzalny język znaczników, stworzony do przechowywania i transportu danych.
W przeciwieństwie do HTML, XML nie specyfikuje w jaki sposób wyświetlić dane, a tylko je przechowuje.
<!-- Komentarze w XML wyglądają jak ten -->
<?xml version="1.0" encoding="UTF-8"?>
<ksiegarnia>
<ksiazka kategoria="GOTOWANIE">
<tytul lang="pl">Codzienny Włoski</tytul>
<autor>Giada De Laurentiis</autor>
<rok>2005</rok>
<cena>30.00</cena>
</ksiazka>
<ksiazka kategoria="DZIECI">
<tytul lang="pl">Harry Potter</tytul>
<autor>J K. Rowling</autor>
<rok>2005</rok>
<cena>29.99</cena>
</ksiazka>
<ksiazka kategoria="WEB">
<tytul lang="pl">Nauka XML</tytul>
<autor>Erik T. Ray</autor>
<rok>2003</rok>
<cena>39.95</cena>
</ksiazka>
</ksiegarnia>
<!-- Powyżej jest typowy plik XML.
Zaczyna się od deklaracji zawierającej metadane (opcjonalne).
XML używa drzewiastej struktury. Powyżej, głównym wierzchołkiem jest
'ksiegarnia' , która zawiera trzy (3) węzły potomne, wszystkie 'ksiazki',
które zawierają swoje węzły potomne, i tak dalej...
Węzły są tworzone używające otwierających/zamykających znaczników.
Węzły potomne znajdują się pomiędzy otwierającym i zamykającym znacznikiem.
-->
<!-- XML przechowuje dwa typy danych
1 - Atrybuty -> metadane o węźle
Zazwyczaj parser XML używa tych informacji do przechowywania danych we
właściwy sposób. Atrybuty nadawane są poprzez wpisanie ich w otwierajacym
znaczniku.
2 - Elementy -> to są czyste dane.
Dane, które parser otrzymuje z pliku XML.
Elementy są deklarowane pomiędzy otwierajacym i zamykającym znacznikiem,
bez nawiasów. -->
<!-- Poniższy element ma dwa atrybuty -->
<plik type="gif" id="4293">komputer.gif</plik>
Dokument XML jest dobrze sformatowany gdy jest syntaktycznie poprawny. Jednakże możliwe jest wstrzykiwanie większej liczby ograniczeń w dokumencie, używając definicji takich jak DTD i XML Schema.
Dokument XML, który jest zgodny ze swoją definicją jest poprawny.
Korzystając z tych narzędzi możesz sprawdzić dane zawarte w dokumencie poza logiką aplikacji.
<!-- Poniżej jest uproszczona wersja dokumentu księgarni,
z dodatkową definicją DTD.-->
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE notatka SYSTEM "Ksiegarnia.dtd">
<ksiegarnia>
<ksiazka kategoria="GOTOWANIE">
<tytul >Everyday Italian</tytul>
<cena>30.00</cena>
</ksiazka>
</ksiegarnia>
<!-- DTD może wyglądać następująco:-->
<!DOCTYPE notatka
[
<!ELEMENT ksiegarnia (ksiazka+)>
<!ELEMENT ksiazka (tytul,cena)>
<!ATTLIST ksiazka kategoria CDATA "Literatura">
<!ELEMENT tytul (#PCDATA)>
<!ELEMENT cena (#PCDATA)>
]>
<!-- DTD zaczyna się od deklaracji
Zaczynając od góry, główny węzeł jest zadeklarowany jako wymagający jednego
lub więcej węzłów potomnych typu 'ksiżka'.
Każda 'ksiażka' powinna zawierać dokładnie jeden 'tytuł' i 'cene' oraz atrybut
'kategoria' z 'literaturą' jako wartość domyślna.
'tytuł' i 'cena' to pola typu parsowalnych zmiennyc znakowych, co oznacza że
użyte znaczniki zostaną zinterpretowane < zamienione <. -->
<!-- DTD moze być deklarowane wewnątrz pliku XML. -->
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE notatka
[
<!ELEMENT ksiegarnia (ksiazka+)>
<!ELEMENT ksiazka (tytul,cena)>
<!ATTLIST ksiazka kategoria CDATA "Literatura">
<!ELEMENT tytul (#PCDATA)>
<!ELEMENT cena (#PCDATA)>
]>
<ksiegarnia>
<ksiazka kategoria="GOTOWANIE">
<tytul >Everyday Italian</tytul>
<cena>30.00</cena>
</ksiazka>
</ksiegarnia>
Got a suggestion? A correction, perhaps? Open an Issue on the GitHub Repo, or make a pull request yourself!
Originally contributed by João Farias, and updated by 1 contributor.