XML c.d.

Mówi się o dokumencie, że jest poprawny składniowo (ang. well-formed), jeżeli jest zgodny z regułami składni XML. Reguły te obejmują m.in. konieczność domykania wszystkich znaczników. Dokument niepoprawny składniowo nie może być przetworzony przez parser XML.

Mówimy o dokumencie, że jest poprawny strukturalnie (ang. valid), jeżeli jest zgodny z definicją dokumentu, tzn. dodatkowymi regułami określonymi przez użytkownika. Do precyzowania tych reguł służą specjalne języki. Najpopularniejszymi są DTD, XML Schema oraz RELAX NG.

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

www: powinien zawierać deklarację XML, która musi być umieszczona na samym początku pliku (nie może być poprzedzona np. komentarzem) 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;
www: musi zawierać dokładnie jeden element główny (zwany root element),może to być element główny o przykładowej nazwie ksiazka-telefoniczna;
www: każdy element musi zaczynać się znacznikiem początku elementu, np. , oraz kończyć identycznym znacznikiem końca elementu np., wyjątek stanowią elementy puste (<element-pusty />), czyli takie, które nie zawierają żadnych danych, ani innych elementów, mogą zawierać atrybuty;
www: nazwy elementów mogą zawierać znaki alfanumeryczne (litery a-z, A-Z oraz cyfry 0-9), znaki ideograficzne (ą, ó, ń, jednak należy unikać takich konstrukcji) oraz 3 znaki interpunkcyjne (podkreślenie _, łącznik -, kropka.). Znak dwukropka zarezerwowany jest dla identyfikacji przestrzeni nazw, której nazwa dopisywana jest przed nazwą elementu np. <przestrzeń1:element>,
www: nazwy elementów nie mogą zaczynać się od znaku łącznika -, kropki, czy cyfry. Dodatkowo nie mogą zaczynać się od xml, XML, xML itp. (wielkość liter bez znaczenia).
www: 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. W naszym przypadku element <newsy> jest rodzicem elementu <news>, element <news> jest dzieckiem elementu <newsy>, a zarazem rodzicem elementów , <autor>, <e-mail>, <tresc>. Nie można stosować konstrukcji takiego typu: <news><tresc></news></tresc>, ponieważ element <tresc> nie jest prawidłowo zagnieżdżony w elemencie <news>;
www: każdy element może zawierać atrybuty, które definiuje się w znaczniku początku elementu, np. atrybutem elementu <news potw="yes"> jest atrybut o nazwie potw oraz wartości yes. Wartości atrybutów podaje się w cudzysłowach albo apostrofach (pojedynczych cudzysłowach).
www: informacje, które zawiera element, muszą być zapisane pomiędzy znacznikiem początku i końca elementu;
www: 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 np. chcemy wstawić znak mniejszości (<), wpisujemy zamiast niego sekwencję &lt; znak ampersand – &amp;, znak większości (>) – &gt;;
www: 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: ]]>.
www: w dokumencie XML możemy wykorzystywać komentarze, które zaczynają się znakami: <!--,, a kończą: -->. Przykład: <!-- To jest komentarz -->,
www: specyfikacja XML zezwala na wstawianie instrukcji przetwarzania, które są wykorzystywane do przeniesienia informacji do aplikacji. Instrukcje przetwarzania rozpoczynają się znakami: <?, a kończą: ?>. Przykładem takiej instrukcji może być odniesienie do arkusza stylów, który jest powiązany z dokumentem XML: <?xml-stylesheet type="text/xsl" href="newsy.xsl"?>.

XML czyni dane przenośnymi

Potrzeba uniwersalnego i czytelnego formatu danych jest widoczna od dawna, a w czasach gwałtownego powiększania się Sieci stała się koniecznością. Wreszcie pojawił się format pozwalający na łatwe przechowywanie dowolnych danych. Dzięki oddzieleniu treści od formy – czego nie umożliwia wspomniany HTML – łatwo skupić się na samych danych. Zwykłe programy mogą dzięki wspólnemu formatowi XML łatwiej wymieniać dane, a informacje publikowane np. w Sieci mogą być łatwiej przetwarzane. Weźmy „na tapetę” notowania spółek giełdowych. Załóżmy, że chcemy napisać program analizujący wahania kursów akcji. Potrzebne jest więc na bieżąco aktualizowane źródło takich danych. Cóż z tego, że wortali finansowych jest kilkanaście, skoro wszystkie one serwują kursy akcji w postaci tabelek HTML. Nawet gdybyśmy kosztem karkołomnej pracy przygotowali narzędzie do odczytywania kursów akcji z komórek tabeli w pliku HTML, to drobna zmiana na stronach danego wortalu – np. niewielkie przegrupowanie danych w tabeli, czy z pozoru nieistotne dodanie w kodzie HTML bannera, zrujnowałoby nasze narzędzie. Stałoby się tak dlatego, że dane w postaci HTML są przyjazne człowiekowi, ale nie maszynie. Gdyby natomiast te dane zapisać w postaci pliku XML, zawierającego tylko właściwą treść (a nie formę), stałyby się one łatwe do indeksowania i przetwarzania. Jeśli zechcemy takie dane XML wyświetlić jako stronę sieci Web, to przetworzenie ich do postaci czytelnej dla człowieka byłoby, dzięki arkuszom stylów bardzo proste.

W języku XML wystarczającym opisem dla danych są one same

Jak wspomniano wyżej, dokument XML sam się opisuje. Można wprawdzie stosować schematy Definicji Typu Dokumentu (znane jeszcze z SGML DTD) i inne sposoby deklarowania jego zawartości (jak XML Schemas), ale rzadko jest to potrzebne. Czytelność XML, nawet bez użycia specjalnych narzędzi, to jedna z jego ważniejszych zalet.

Niebywała elastyczność i rozszerzalność

Wbudowany mechanizm przestrzeni nazw zapewnia łatwość rozbudowy istniejących dokumentów przy zachowaniu kompatybilności wstecz. Załóżmy, że otrzymaliśmy w dokumencie XML fakturę, ale musimy na własny użytek dodać do niej pewne informacje. Sposobność dodania danych nie jest oczywiście niczym niezwykłym, ale my będziemy mogli tego dokonać w sposób absolutnie dowolny i niezależny od wcześniejszej wersji dokumentu. Niespotykane jest również, że pierwszy autor będzie mógł korzystać z tego dokumentu identyczną, jak przed naszymi modyfikacjami, metodą.

Otwartość i perspektywy

XML nie został opracowany przez konkretną firmę, a przez niezależne i autorytatywne konsorcjum W3C. Ta sama organizacja odpowiada za HTML i inne standardy sieciowe. Specyfikacja XML została udostępniona za darmo i nie należy do żadnej firmy, ale XML jest przez ważne korporacje wspierany. Przykładem niech będą Microsoft, Sun czy IBM. Poparcie tych firm właściwie samo w sobie jest gwarancją sukcesu XML-a. Sukces ten jest zresztą widoczny już dziś. Jak grzyby po deszczu powstają idee i standardy, w których XML jako mechanizm wymiany informacji pełni kluczową rolę.

XML może być narzędziem sam dla siebie

Czego przykładem są standardy umożliwiające przetwarzanie kodu XML za pomocą właśnie XML-a (np. język XSLT), czy pozwalający definiować właściwe wartości danych język DCD (Document Content Description). Możliwości rozwoju XML-a wydają się więc nieograniczone.

XML wersja 1.1

Równocześnie z czwartą odsłoną wersji 1.0, W3C opublikowało drugą odsłonę wersji 1.1. Wprowadza ona zmiany w zestawie dopuszczanych znaków, co ma związek z modyfikacjami standardu Unicode przeprowadzanymi już po publikacji wersji 1.0.

Korzyści ze zmian wprowadzonych w nowej wersji są zazwyczaj znikome w porównaniu ze stratą, jaką jest brak zgodności z wersją 1.0. Samo W3C nie traktuje tej wersji jako następcy dla 1.0, raczej jako jego odmianę do bardzo specyficznych zastosowań. Wciąż zalecane jest korzystanie z wersji 1.0 wszędzie, gdzie to możliwe.

Obie wersje wciąż są wspierane i rozwijane przez W3C, a kolejne ich edycje, jak dotąd, pojawiają się w tym samym czasie.

Przykładowy dokument XML

<?xml version="1.0" encoding="UTF-8"?>
<ksiazka-telefoniczna kategoria="bohaterowie książek">
 <!-- komentarz -->
  <osoba charakter="dobry">
    <imie>Ambroży</imie>
    <nazwisko>Kleks</nazwisko>
    <telefon>123-456-789</telefon>
  </osoba>
  <osoba charakter="zły">
    <imie>Alojzy</imie>
    <nazwisko>Bąbel</nazwisko>
    <telefon/>
  </osoba>
</ksiazka-telefoniczna>

Dokument rozpoczyna się instrukcją sterującą, która zawiera informacje o wersji standardu XML, z jakim jest zgodny, oraz o sposobie kodowania znaków. Wszystkie te informacje są opcjonalne, można pomijać dowolne z nich, a nawet całą instrukcję sterującą. W razie braku którejś z danych przyjmuje się wartość domyślną, jakimi są właśnie wersja 1.0 oraz standard kodowania UTF-8.

Korzeniem dokumentu jest element o nazwie ksiazka-telefoniczna. Ma on przypisany jeden atrybut o nazwie kategoria i wartości bohaterowie książek. Korzeń jest rodzicem dwóch innych elementów, oba mają tę samą nazwę osoba i przypisany atrybut o nazwie charakter. Każdy z elementów o nazwie osoba jest rodzicem dla trzech innych elementów o nazwach imie, nazwisko i telefon, które zawierają konkretne dane w formie węzłów tekstowych (tekst pomiędzy odpowiednimi znacznikami otwierającym i zamykającym). Element o nazwie telefon w dwunastym wierszu dokumentu jest pusty (nie ma żadnych potomków), a znacznik otwierający jest jednocześnie znacznikiem zamykającym. Zapis <telefon/> jest równoważny zapisowi <telefon></telefon>. W trzecim wierszu dokumentu znajduje się komentarz.

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:

 <?xml-stylesheet type="text/css" href="moj-styl.css"?>

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. Większość współczesnych przeglądarek wyposażona jest w transformator XSL i wystarczy dodać na początku przetwarzanego dokumentu XML instrukcję sterującą podobną do poniższej:

 <?xml-stylesheet type="text/xsl" href="moj-xslt.xsl"?>

Więcej informacji o XML – Tworzenie dokumentów XML

Top