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 | czytane 25040×
KOMENTARZE
Wprowadzenie do XML-a
Spis treści
Wstęp
Podstawowe cechy
Składnia
Znaki specjalne
Odsyłacze
Wstęp
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.
Podstawowe cechy
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ą.
Składnia
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):
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'>.
Znaki specjalne
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.
Odsyłacze
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.