Projektowanie systemów informatycznych
Sekcje CDATA
Użycie takiej sekcji informuje procesor XML, że zawarty w niej tekst ma przekazać bez zmian aplikacji przetwarzającej dane z dokumentu XML. Są one zatem silnym mechanizmem, gdyż umożliwiają wstawianie do dokumentów XML danych nie podlegających interpretacji. Sekcje CDATA rozpoczynamy pisząc < ! [CDATA a kończymy ] ] >.
Umożliwiają one uniknięcia konfliktów między poszczególnymi zbiorami znaczników, powstałych przez połączenie kilku dokumentów XML w jedną całość. Mechanizm ten polega na poprzedzeniu nazwy elementu, identyfikatorem odpowiedniej przestrzeni nazw z dwukropkiem. Powstała w ten sposób nazwa jest określana mianem nazwy kwalifikowanej. Specyfikacja przestrzeni nazw zaleca używanie adresów URI jako identyfikatorów. Adresy URI mogą zawierać znaki niedopuszczalne w nazwach elementów XML i być dość długie. W związku z tym identyfikator jest wiązany z prefiksem (nazwą zawierającą tylko znaki dopuszczalne oprócz dwukropka w elementach XML), nazwy kwalifikowane powstają zaś przez złożenie prefiksu, dwukropka i lokalnej nazwy elementu.
W celu zdefiniowania przestrzeni nazw używa się atrybutu xmlns: prefiks, gdzie prefiks zostanie wykorzystany do identyfikacji naszej przestrzeni. Wartością atrybutu xmlns:prefiks będzie zaś jakiś adres URI.
Przykład dokumentu XML (kursy xml) z domyślną i jawną przestrzenią nazw:
<?xml version="1.0" encoding="ISO-8859-2"?>
<tabela_kursow xmlns="http://www.moj a_przestrzen_nazw.pl" xmlns:kursy="http://www.kursy.pl">
<data_notowania>2005-03-1l</data_notowania>
<kursy:pozycja>
<kursy:nazwa_waluty>euro</kursy:nazwa_waluty> <kursy:przelicznik>l</kursy:przelicznik>
<kursy:kod_waluty>EUR</kursy:kod_waluty>
<kursy:kurs_kupna>3,9072</kursy:kurs_kupna>
<kursy:kurs_sprzedazy>3,9862</kursy:kurs_sprzedazy> </kursy:pozycja>
<kursy:pozycja>
<kursy:nazwa_waluty>jen japońskic/kursy:nazwa_waluty>
<kursy:przelicznik>100</kursy:przelicznik>
<kursy:kod_waluty>JPY</kursy:kod_waluty>
<kursy:kurs_kupna>2,7996</kursy:kurs_kupna>
<kursy:kurs_sprzedazy>2,8562</kursy:kurs_sprzedazy> </kursy:pozycja> </tabela_kursow>
Michał Bleja
Uniwersytet Łódzki