XML (Extensible Markup Language) czyli jak wymieniać dane z „kosmitami”.

Niejednej osobie hasło XML obiło się o uszy i pewnie nie jedna osoba miała z nim do czynienia. Tym, którzy mają wiedzę, że istnieje to rozwiązanie ale nie znają szczegółów przedstawię kilka informacji.

Po co XML? Jeśli chcemy wymieniać dane z innymi systemami musimy mieć ustalone zasady w jaki sposób będzie się to odbywać. Musimy mieć metodę wymiany danych, które też muszą być w jakiś sposób sformatowane. XML jest rozwiązaniem możliwym do zastosowania w takiej sytuacji. Służy on głównie do opisu danych przy pomocy znaczników podobnych do tych, które są używane w HTML ale w przeciwieństwie do HTML nie są zdefiniowane. Znaczniki XML definiuje ten, kto tworzy dokument XML – np. grupa programistów korzystająca z wymiany danych przez XML, twórca programu itp.

Dokument XML jest dokumentem tekstowym, który może być normalnie czytany tak jak każdy dokument tekstowy. Jako, że jest dokumentem tekstowym może w łatwy sposób służyć do wymiany danych pomiędzy różnymi platformami systemowymi.

Gdy przyjrzymy się plikowi XML to zauważymy, że podobnie jak w HTML nazwy tagów zamknięte są pomiędzy nawiasami ostrymi „<” i „>” oraz w przeciwieństwie do HTML tag otwierający musi być „zamknięty” tagiem zamykającym . Dane zamieszczane są pomiędzy tagami np. 22,00 zł. Tagi mogą mieć też atrybuty (tak jak w HTML) np. dysk. Powoduje to, że plik XML jest większy niż plik z samymi danymi ale nie rodzi to aż takiego dużego problemu zważywszy na korzyści jakie daje ten format.

Tworząc dokument XML w pierwszej linijce definiujemy typ dokumentu (przyjmijmy, że zawsze to robimy).

<?xml version="1.0" encoding="utf-8"?>

Plik XML nie ma ściśle zdefiniowanych tagów więc to na „twórcy” spoczywa obowiązek ich samodzielnego zdefiniowania. Przykładowy dokument XML:

<?xml version="1.0" encoding="utf-8"?>

<!-- plik xml z danymi komisu samochodowego -->
<komis>
    <oferta nr_oferty="1">
        <marka>Ford</marka>
        <model>Focus</model>
        <wersja>MK3</wersja>
        <silnik>
            <typ_silnika>benzyna</typ_silnika>
            <pojemnosc>1599</pojemnosc>
            <moc>100</moc>
        </silnik>
        <nadwozie>
            <typ_nadwozia>kombi</typ_nadwozia>
            <ilosc_drzwi>5</ilosc_drzwi>
            <kolor>navy blue</kolor>
        </nadwozie>
    </oferta>
</komis>

Tworząc plik XML trzeba trzymać się pewnych zasad:

  • plik XML musi mieć zawsze element bazowy (root element) – w powyższym pliku jest to „komis”
  • wszystkie tagi muszą być zamknięte
  • wielkość liter w tagach XML ma znaczenie
  • nazwy tagów muszą zaczynać się od litery i zawierać mogą jedynie litery, znak podkreślenia i cyfry
  • nazwy tagów nie mogą zaczynać się od XML, xml itp.
  • elementy XML muszą być prawidłowo zagnieżdżone (złe zagnieżdżenie spowoduje błędy przy walidacji dokumentu XML)
  • wartości atrybutów w tagach muszą być umieszczone w cudzysłowach lub apostrofach
  • komentarze (podobnie do HTML) rozpoczynamy od „<!–” a kończymy „–>”

Niestosowanie się do powyższych zasad spowoduje, że dokument będzie źle sformatowany a co za tym idzie nie będzie przetwarzany po napotkaniu pierwszego błędu.

Jeśli stworzymy dokument XML to możemy go zwalidować (sprawdzić poprawność) korzystając z walidatora XML np. -> https://validator.w3.org/

W ten sposób możemy sprawdzić czy dokument jest poprawnie sformatowany („well formed”) ale nie sprawdzamy czy jest ważny („valid”) pod względem struktury.

Do tego celu musimy posłużyć się dodatkowym dokumentem opisującym strukturę pliku XML – dokumentem DTD (Document Type Definition). Przykładowy dokument DTD do powyższego pliku komis.xml znajduje się poniżej:

<!ELEMENT komis (oferta)+ >

<!ELEMENT oferta (marka, model, wersja, silnik, nadwozie)+ >

<!ELEMENT silnik (typ_silnika, pojemnosc, moc)+ >
<!ELEMENT nadwozie (typ_nadwozia, ilosc_drzwi, kolor)+ >


<!ELEMENT marka (#PCDATA) >
<!ELEMENT model (#PCDATA) >
<!ELEMENT wersja (#PCDATA) >

<!ELEMENT typ_silnika (#PCDATA) >
<!ELEMENT pojemnosc (#PCDATA) >
<!ELEMENT moc (#PCDATA) >

<!ELEMENT typ_nadwozia (#PCDATA) >
<!ELEMENT ilosc_drzwi (#PCDATA) >
<!ELEMENT kolor (#PCDATA) >


<!ATTLIST oferta nr_oferty CDATA "1">

Dokument XML wykorzystujący powyżej zdefiniowany dokument DTD:

<?xml version="1.0" encoding="utf-8"?>

<!DOCTYPE komis SYSTEM "https://www.rafalrebacz.pl/examples/xml/komis.dtd">

<!-- plik xml z danymi komisu samochodowego -->
<komis>
	<oferta nr_oferty="1">
		<marka>Ford</marka>
		<model>Focus</model>
		<wersja>MK3</wersja>
		<silnik>
			<typ_silnika>benzyna</typ_silnika>
			<pojemnosc>1599</pojemnosc>
			<moc>100</moc>
		</silnik>
		<nadwozie>
			<typ_nadwozia>kombi</typ_nadwozia>
			<ilosc_drzwi>5</ilosc_drzwi>
			<kolor>navy blue</kolor>
		</nadwozie>
	</oferta>
</komis>

Korzystając z wcześniej wspomnianego walidatora można sprawdzić czy dokument jest poprawnie sformatowany („well formed”) i ważny („valid”) -> sprawdzenie poprawności

Ciąg dalszy w kolejnych artykułach.

Autor: gervee

Pełnoetatowy ojciec małej gromadki, programista(?), "amator" fotograf, "dłubacz" lubiący DIY, miłośnik chmielonego napitku. "Żartowniś" bez poczucia humoru ;).

Dodaj komentarz