Czym jest XML ?
- XML jest skórtem od EXtensible Markup Language
- XML został stworzony do przenoszenia danych, nie do ich prezentacji
- Znaczniki w XML nie są zdefiniowane. Trzeba samemu zdefiniować własne
- XML jest pomyślany jako język samoopisujący się
- Dokument XML zawiera tekst, nie może zawierać danych binarnych
- XML jest oparty o model dokumentu jako drzewa, którego węzłami są elementy a liśćmi - pola tekstowe.
Znaczniki
Znaczniki XML wyglądają podobnie do znaczników HTML, tzn. znacznik startowy rozpoczyna się od znaku "
<
", a znacznik końcowy od "</
". Oba kończą się znakiem ">
".Pomiędzy tymi znakami znajduje się nazwa znacznika, która może być dowolnie definiowana. Powinna ona odnosić się i opisywać zawartość znacznika, a nie sposób jego prezentacji.
<TAG_NAME> TAG_CONTENT </TAG_NAME>W XML mogą występować elementy nie zawierające żadnej treści, tzw. empty tags. W takim przypadku ich zapis może zostać uproszczony do postaci jednego znacznika.
<EMPTY_TAG_NAME />
Przykład:
1 <rozklad> 2 <miejscowosc>Poznań</miejscowosc> 3 <linia> 4 <numer>5</numer> 5 <poczatek>Górczyn</poczatek> 6 <koniec>Miłostowo</koniec> 7 </linia> 8 <linia> 9 <numer>105</numer> 10 <poczatek>Rondo Rataje</poczatek> 11 <koniec>Piątkowo</koniec> 12 </linia> 13 </rozklad>[pokaż zawartość pliku] [pobierz plik] idź do góry
Atrybuty
Znaczniki XML mogą posiadać atrybuty. Jest to para nazwa-wartość, która jest powiązana ze znacznikiem startowym elementu. Nazwy są oddzielone od wartości znakiem "=". Wartość powinna być otoczona pojedynczym lub podwójnym apostrofem.
<TAG_NAME ATTRIBUTE_NAME="VALUE">
TAG_CONTENT
</TAG_NAME>
Częstym pytaniem jest pytanie o to czy daną informację powinniśmy zapisywać jako atrybut, czy może jako element podrzędny. Niestety nie ma prostej i jednoznacznej odpowiedzi na tego typu pytania. Przyjmuje się, że atrybuty służą do zapisywania meta-informacji, natomiast elementy podrzędne wykorzystywane powinny być do przechowywania informacji właściwej. Problem polega jednak na tym, że czasem trudno jest ustalić co jest informacją właściwą, a co meta-informacją.Istnieją jednak ograniczenia, które mogą być pewną wskazówką w tej kwestii. Po pierwsze dany element nie może mieć dwóch lub więcej atrybutów o tej samej nazwie. Po drugie, atrybuty mogą przyjmować tylko wartości w postaci ciągu znaków, co jest w wielu sytuacjach poważnym ograniczeniem. Przykład:
1 <rozklad okres="letni"> 2 <miejscowosc>Poznań</miejscowosc> 3 <linia status="remontowana" typ="tramwaj"> 4 <numer>5</numer> 5 <poczatek>Górczyn</poczatek> 6 <koniec>Miłostowo</koniec> 7 </linia> 8 <linia typ="autobus"> 9 <numer>105</numer> 10 <poczatek>Rondo Rataje</poczatek> 11 <koniec>Piątkowo</koniec> 12 </linia> 13 </rozklad>[pokaż zawartość pliku] [pobierz plik] idź do góry
Nazwy XML
- Nazwy elementów i atrybutów XML mogą zawierać dowolny znak alfanumeryczny.
- Mogą też zawierać następujące znaki specjalne:
"_", "-", "."
. Inne nie wymienione znaki są niedozwolone. - Wyjątkiem jest ":", którego użycie jest ściśle zdefiniowane i ograniczone do tzw. przestrzeni nazw.
- Nazwy XML muszą rozpoczynać się od litery, ideogramu lub znaku podkreślenia. (Nie mogą rozpoczynać się od cyfry lub znaków: "-" lub ".".)
- Długość nazwy XML nie jest w żaden sposób ograniczona.
- Wielkość liter w nazwie ma znaczenie.
<Drivers_License_Number>98 NY 32</Drivers_License_Number> <month-day-year>7/23/2001</month-day-year> <first_name>Alan</first_name> <_4-lane>I-610</_4-lane> <téléphone>011 33 91 55 27 55 27</téléphone>Natomiast poniższe przykłady są nie poprawne (znaki nie spełniające reguł zostały wyróżnione).
<Driver's_License_Number>98 NY 32</Driver's_License_Number> <month/day/year>7/23/2001</month/day/year> <first name>Alan</first name> <-- spacja w nazwie atrybutu <4-lane>I-610</4-lane>idź do góry
Encje
Encje są czymś w rodzaju szablonów tekstu. Pozwalają uprościć częste wpisywanie jakiegoś tekstu a tym samym także pomyłek. To również najlepszy sposób, na umieszczenie w kodzie tzw. „niedozwolonych znaków”. W XML występuje 5 predefiniowanych encji, służących zapisywaniu w treści dokumentu znaków specjalnych:
- < - znak mniejszości, <
- & - znak ampersand, &
- > - znak większości, >
- " - znak cudzysłowu, "
- ' - znak apostrofu, '
<Tresc_pytania> Znak "<" oznacza ... </Tresc_pytania>lub
<Element Atrybut="To jest "ciekawa" wartość"> ... </Element>idź do góry
Przestrzenie nazw
Język XML pozwala ze sobią mieszać różne bazowane na XML języki, np. XHTML , SVG , MathML , Atom , RDF , itp. Dopóki zbiór znaczników tych języków jest rozłączny sprawa jest prosta. Problemy zaczynają się w sytuacji, gdy dany znacznik ma różne znaczenie w więcej niż jednym meta języku. W takim przypadku konieczne jest wykorzystanie przestrzeni nazw, które stanowią niejako uzupełnienie nazwy elemenu dzięki czemu usuwają niejednoznaczność jego interpretacji.
Tak więc przestrzenie nazw pozwalają używać dowolnie wielu słowników znaczników w jednym dokumencie i to w sposób dość elastyczny. Aby wykorzystać określoną przestrzeń nazw należy zastosować następującą składnię
<TAG_NAME xmlns:PREFIX="URI" >
TAG_CONTENT
</TAG_NAME>
Atrybut xmlns
definiuje jakiej przestrzeni nazw będzie używał dany element i jego elementy podrzędne np. :
<xml xmlns="http://www.w3.org/1999/XSL/Transform">
Jeśli naprzemiennie wykorzystywanych jest więcej przestrzeni nazw, można zdefiniować dla każdej z nich przedrostek np. :
<root xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:svg="http://www.w3.org/2000/svg" > <xsl:element> ... </xsl:element> <svg:element> ... </svg:element> </root>idź do góry
Instrukcje przetwarzające
Instrukcje przetwarzania (tzw. processing instruction) zawierają informacje potrzebne dla aplikacji przetwarzających dokument XML. Aby odróżnić je od zwykłego elementu, są one umieszczane w bloku, który jest ograniczony znakami "
<?
" i "?>
". Słowo występujące po znaczniku otwierającym jest słowem kluczowym, które jest rozpoznawane przez aplikację docelową. Dalsza część informacji jest przetwarzana przez tą właśnie aplikację. Format zapisu tych danych może być różny, w zależności od wykorzystywanej aplikacji.Poniżej kilka przykładów:
połączenie z arkuszem CSS <?xml-stylesheet type="text/css" href="default.css" ?> połączenie z arkuszem XSL <?xml-stylesheet type="text/xml" href="default.xsl" ?> instrukcja "wstaw stronę" dla programu DTP <?DTPEditor do:page-break ?>idź do góry
Deklaracja
Na początku dokumentu może (ale nie musi) występować deklaracja XML, która służy do podania wersji standardu XML, standardu kodowania użytego do zapisania dokumentu i informacji czy dany dokument nie zawiera odwołań do źródeł zewnętrznych.
<?xml version="1.0" encoding="ASCII" standalone="yes"?>
Jeśli w dokumencie brak jest deklaracji to przyjmuje się, że dane zostały zapisane w standarcie UTF-8, a dokument zawiera odwołania do źródeł zewnętrznych, czyli poniższa deklaracja, jest równoważna ustawieniom domyślnie przyjmowanym.
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
idź do góry
Poprawność składniowa
Dokument jest poprawny składniowo (ang. well-formed) jeśli jest zgodny z gramatyką XML i spełnia tzw. "well-formedness constraints" wymienione w specyfikacji XML .
Przykładowe reguły, które muszą zostać spełnione aby dokument był poprawny składniowo:
- Dla każdego znacznika początkowego, musi istnieć odpowiadający mu znacznik końcowy.
- Elementy muszą się w sobie zagnieżdżać, a nie krzyżować lub nakładać.
- Może istnieć tylko jeden element główny.
- Wartości atrybutów muszą być zawarte w znakach apostrofów
- Element nie może zawierać dwóch atrybutów o tej samej nazwie
- Komentarze i instrukcje przetwarzające nie mogą występować wewnątrz znaczników.
Poprawność strukturalna
Dokument XML jest poprawny strukturalnie (ang. valid) jeśli jest zgodny z definicją struktury. Jeśli nie jest powiedziane inaczej, chodzi o DTD , a dokument ma spełniać tzw. "validity constraints" wymienione w specyfikacji XML . Tych samych terminów używa się także do określenia zgodności ze schematem XML Schema bądź innych standardów np Relax NG . idź do góry