W ciągu ostatnich kilku lat format XML na stałe zagościł w świecie oprogramowania. Jego obecność szczególnie daje się zauważyć w Internecie. Stał się on tak popularny, gdyż rozwiązuje wiele trudności, na które dawniej napotykali twórcy i użytkownicy oprogramowania w dziedzinie reprezentacji i wymiany danych. W niniejszym artykule zostaną omówione główne cechy formatu XML i wymienione w punktach zasady tworzenia dokumentów XML.
15.9.2004 15:00 | Tomasz Nikiel | přečteno 24948×
Spis treści
Wstęp
Podstawowe cechy
Składnia
Znaki specjalne
Odsyłacze
W ciągu ostatnich kilku lat format XML na stałe zagościł w świecie oprogramowania. Jego obecność szczególnie daje się zauważyć w Internecie. Stał się on tak popularny, gdyż rozwiązuje wiele trudności, na które dawniej napotykali twórcy i użytkownicy oprogramowania w dziedzinie reprezentacji i wymiany danych. W niniejszym artykule zostaną omówione główne cechy formatu XML i wymienione w punktach zasady tworzenia dokumentów XML.
XML (eXtensible Markup Language) jest tekstowym formatem służącym do opisywania informacji (danych) w sposób strukturalny. Często mylnie (i na wyrost) nazywany jest „językiem”. Nie jest to język, a jedynie format przy pomocy którego nadajemy znaczenie poszczególnym fragmentom informacji.
Jego główne zalety:
Jest formatem ogólnym. Nie jest ukierunkowany na jedno, konkretne zastosowanie, lecz definiuje ogólną składnię opisu danych. XML Nie dochodzi do poziomu semantyki, a jedynie ogranicza się do definicji uniwersalnego sposobu wyodrębniania elementów struktury danych.
Jest bardzo elastyczny i uniwersalny. Dzięki zastosowanym rozwiązaniom XML nadaje się do opisu bardzo zróżnicowanych struktur. Równie dobrze sprawdza się przy opisie regularnych danych tabelarycznych, jak i hierarchicznych, czy nawet danych o nieregularnej i nieokreślonej z góry strukturze (np. tekst formatowany).
Jest to format tekstowy, a więc czytelny dla człowieka. To ogromna zaleta w porównaniu z formatami binarnymi, które do obsługi wymagają narzędzi specjalnie stworzonych z myślą o prezentacji tych formatów. Dysponując jedynie edytorem tekstowym człowiek jest w stanie łatwo i szybko przejrzeć informację XML i zorientować się w jej treści.
Jest bardzo rozpowszechniony. Istnieje duża ilość dojrzałych i efektywnych narzędzi do jego przetwarzania. W praktyce oznacza to, że w każdej sytuacji, kiedy programista potrzebuje opisać jakąś strukturę danych, nie musi wymyślać nowej składni opisu i tworzyć oprogramowania, które interpretowałoby tę składnię. Może on zastosować XML wykorzystując istniejące narzędzia, które wyręczają programistę szczególnie w dwóch dziedzinach: rozbioru gramatycznego (tzw. parsery, które automatycznie zamieniają format tekstowy na model danych w pamięci i kontrolują poprawność składni) oraz modyfikacji i przetwarzania do innych formatów (pokrewne technologie, np. XSLT).
Oto przykład czytelności XML-a. W edytorze tekstowym stworzyliśmy krótki dokument:
Jedno ze słów jest pogrubione, drugie podkreślone, a trzecie pochylone. Zapisujemy go do formatu binarnego (DOC):
Można rozpoznać litery wchodzące w skład napisu, ale trudno powiedzieć coś więcej. Natomiast po zapisaniu do formatu SXW, który oparty jest na XML-u, można (po rozpakowaniu) na pierwszy rzut oka zobaczyć słowa „jest”, „napis” i „testowy” otoczone znacznikami określającymi ich styl, a ponad nimi definicje tych stylów.
Oto inne porównanie. Poniżej widzimy początek pliku graficznego z programu Corel DRAW (binarny format CDR)
oraz fragment pliku graficznego w XML-owym formacie SVG. Widać trzy spośród elementów rysunku: prostokąt (rect), okrąg (path z atrybutem o wartości arc) i krzywą.
Zastosowanie XML-a nie powinno sprawić problemu osobom znającym HTML, gdyż XML jest do niego podobny. Tak jak i w przypadku HTML-a:
Dokument XML składa się z tekstu, w którym znajdują się elementy określające strukturę, oznaczone przy pomocy znaczników (tags).
Istnieją 2 rodzaje znaczników: otwierające i zamykające. Znacznik otwierający oznaczony jest przez słowo (nazwę znacznika) zamknięte w parze nawiasów < i > (np. <title>). Znacznik zamykający dodatkowo posiada znak / umieszczony przed nazwą (np. </address>). Para znaczników: otwierającego i zamykającego o tej samej nazwie wyznacza granicę elementu struktury (np. <title>To jest tytuł</title>).
Znaczniki mogą się zagnieżdżać, czyli jedne mogą występować w obszarze otoczonym przez drugie.
Tak wygląda prawidłowy plik XML (jest to jeden z plików konfiguracyjnych serwera aplikacyjnego J2EE JBoss):
<?xml version="1.0" encoding="UTF-8"?> <StateManager> <Users> <User> <Name>john</Name> <Password>needle</Password> <Id>DurableSubscriberExample</Id> </User> <User> <Name>guest</Name> <Password>guest</Password> </User> <User> <Name>nobody</Name> <Password>nobody</Password> </User> <User> <Name>dynsub</Name> <Password>dynsub</Password> </User> </Users> <Roles> <Role name="guest"> <UserName>guest</UserName> <UserName>john</UserName> </Role> <Role name="subscriber"> <UserName>john</UserName> </Role> <Role name="publisher"> <UserName>john</UserName> <UserName>dynsub</UserName> </Role> <Role name="durpublisher"> <UserName>john</UserName> <UserName>dynsub</UserName> </Role> <Role name="noacc"> <UserName>nobody</UserName> </Role> </Roles> <DurableSubscriptions/> </StateManager>
Należy jedynie pamiętać, że inaczej niż w HTML-u:
Dokument XML musi w całości zawierać się w pojedynczej parze znaczników (otwierającym i zamykającym):
<doc> To jest <red>czerwone</red> </doc>
ale nie:
<part1> To jest <red>czerwone</red> </part1> <part2> To jest <green>zielone</green> </part2>
Dokument musi zaczynać się od tzw. instrukcji przetwarzania (processing instruction):
<?xml version="1.0"?>
Można umieszczać dodatkowe atrybuty, np:
<?xml version="1.0" encoding="iso-8859-2"?>
Atrybut encoding powinien zawierać odpowiednie dla dokumentu kodowanie znaków. Jeśli go nie ma, wtedy obowiązuje zestaw ASCII.
Każdy otwarty znacznik musi być zamknięty. Popularne w HTML-u pojedyncze, niezamykane znaczniki, jak <br> czy <img>, w XML-owej odmianie HTML-a, zwanej XHTML muszą być zamykane: <br></br>. Taki pusty znacznik można (i jest to zalecane) zapisać w formie skróconej: <br/>.
Zasięgi różnych znaczników nie mogą się krzyżować - muszą zachowywać ścisłą hierarchię. Dlatego niedopuszczalna jest sytuacja: <b>grube<i>i pochyłe</b>tylko pochyłe</i>.
XML jest wrażliwy na wielkość liter. Dlatego fragment: <address>ul. Północna 17</Address> jest nieprawidłowy, ponieważ otwierający <address> nie znajduje odpowiadającego mu znacznika zamykającego.
Wartości atrybutów znaczników muszą być zawarte w cudzysłowie. Nie można zapisać: <person name=Mike>. Musi być <person name="Mike"> lub <person name='Mike'>.
Ponieważ niektóre znaki są używane do oznaczania elementów XML-a, istnieje konieczność ich zakodowania. Dlatego znaki: < > & zapisuje się w postaci tzw. entities, czyli: < > &.
Gdybyśmy chcieli literalnie zacytować fragment XML-a:
<person> <first-name>Andrzej</first-name> <last-name>Nowak</last-name> <age>25</age> </person>
wewnątrz innego pliku XML-owego, napisalibyśmy:
<example> <title>Przykład pliku XML</title> <content> <person> <first-name>Andrzej</first-name> <last-name>Nowak</last-name> <age>25</age> </person> </content> </example>
Widać, że jest to niewygodne. Jeśli tekstu jest więcej, lepiej posłużyć się sekcją CDATA. Umieszczone w tej sekcji (czyli pomiędzy sekwencją <![CDATA[ , a ]]>) znaki nie są interpretowane jako XML, więc nie ma potrzeby używać entities. Nasz przykład wyglądałby wtedy tak:
<example> <title>Przykład pliku XML</title> <content><![CDATA[ <person> <first-name>Andrzej</first-name> <last-name>Nowak</last-name> <age>25</age> </person> ]]></content> </example>
Teraz element <person> wraz z podelementami nie jest częścią struktury znacznika <example>. Jest on traktowany jak nic nie znaczący tekst.
Standardem XML zajmuje się organizacja W3C (WWW Consortium), która rozwija większość standardów związanych z siecią WWW: http://www.w3c.org/XML.
Autor: Tomasz Nikiel, 14-09-2004.