Przestrzenie nazw w XML (ang. namespaces)

Język XML pozwala ze sobią mieszać różne bazowane na XML języki, np. XHTML, SVG, MathML, Atom, RDF, itp.

Aby przeglądarki (lub inne korzystające z nich programy) mogły rozróżnić które języki zostały użyte wykorzystują przestrzenie nazw.

Każdy element i atrybut XML może być w przestrzeni nazw. Przestrzeń nazw jest jakby uzupełnieniem nazwy elementu, np. elementy <title> w XHTML i <title> w Atom mają taką samą nazwę, ale odróżnia je przestrzeń nazw:

 XHTML: <title> + http://www.w3.org/1999/xhtml
 Atom: <title> + http://www.w3.org/2005/Atom

Przestrzeń nazw to URI, ale wcale nie musi wskazywać istniejącej strony. Używa się adresów po to, aby ułatwić autorom wybranie przestrzeni nazw, które na pewno będą unikalne i pod ich kontrolą.

Przedrostki i xmlns

Oczywiście pisanie przestrzeni nazw obok każdego elementu było by zbyt uciążliwe:

 <http://www.w3.org/1999/xhtml:html><http://www.w3.org/1999/xhtml:head><http://www.w3.org/1999/xhtml:title>Tytuł w XHTML</http://www.w3.org/1999/xhtml:title></http://www.w3.org/1999/xhtml:head><http://www.w3.org/1999/xhtml:body>Treść w XHTML</http://www.w3.org/1999/xhtml:body></http://www.w3.org/1999/xhtml:html>

Dlatego istnieje atrybut xmlns, który deklaruje jaką przestrzeń nazw ma element i jego potomkowie.

 <html xmlns="http://www.w3.org/1999/xhtml"><head><title>Tytuł w XHTML</title></head><body>Treść w XHTML</body></html>

Jeśli używa się kilku przestrzeni nazw naprzemiennie, można zadeklarować dla nich przedrostki i używać przedrostka zamiast pełnej nazwy:

 <xhtml:html xmlns:xhtml="http://www.w3.org/1999/xhtml"><xhtml:head><xhtml:title>Tytuł w XHTML</xhtml:title></xhtml:head><xhtml:body>Treść w XHTML</xhtml:body></xhtml:html>

Zmodyfikowano: 16.08.2011, 08:49
submit