Atrybut xmlns w HTML oznacza „XML Namespace” (przestrzeń nazw XML) i służy do określenia, w jakiej przestrzeni nazw znajdują się elementy danej strony lub fragmentu dokumentu. Jest to kluczowy element w pracy z dokumentami opartymi na XML, takimi jak XHTML, i pozwala na jednoznaczną identyfikację elementów nawet wtedy, gdy używasz wielu technologii XML jednocześnie.
Do czego służy xmlns?
- Przestrzenie nazw (namespaces) – służą do unikania konfliktów pomiędzy nazwami znaczników, szczególnie gdy w jednym dokumencie używasz elementów pochodzących z różnych standardów XML;
- Atrybut
xmlns– jednoznacznie określa, do jakiego standardu należą znaczniki, dzięki czemu przeglądarka lub inny parser XML wie, jak interpretować każdy z nich; - Standardowe zastosowanie
xmlns– w HTML występuje podczas pracy z dokumentami XHTML, gdzie wymagane jest przestrzeganie ścisłych zasad XML.
Składnia i podstawowe zastosowanie
Atrybut xmlns umieszcza się najczęściej w tagu <html> na początku dokumentu:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Przykład XHTML z xmlns</title>
</head>
<body>
<p>Przykładowa treść strony.</p>
</body>
</html>
W powyższym przykładzie:
- Wartość
http://www.w3.org/1999/xhtml– jednoznacznie wskazuje, iż cały dokument jest zgodny z przestrzenią nazw XHTML.
Kiedy używać xmlns?
| Standard | Czy używać xmlns? |
|---|---|
| XHTML | Wymagane |
| HTML5 | Opcjonalne, zwykle pomijane |
| HTML 4.01 | Niedozwolone, ignorowane |
- W dokumentach XHTML (
application/xhtml+xml) – atrybutxmlnsjest wymagany i stanowi podstawę prawidłowej interpretacji kodu przez przeglądarki oraz inne narzędzia przetwarzające XML; - W czystych dokumentach HTML5 – nie trzeba – i nie powinno się – używać
xmlns, ponieważ HTML5 nie jest ścisłym podzbiorem XML.
Przykłady użycia xmlns w praktyce
Tworzenie strony w XHTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Strona XHTML</title>
</head>
<body>
<p>To jest dokument w XHTML.</p>
</body>
</html>
Łączenie wielu przestrzeni nazw XML w jednym dokumencie
Jeśli musisz używać na stronie dodatkowych standardów XML (np. SVG, MathML), przypisujesz im własne przestrzenie nazw:
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:svg="http://www.w3.org/2000/svg" xmlns:math="http://www.w3.org/1998/Math/MathML">
<body>
<svg:svg width="100" height="100">
<svg:circle cx="50" cy="50" r="40" />
</svg:svg>
<math:math>
<math:msup>
<math:mi>x</math:mi>
<math:mn>2</math:mn>
</math:msup>
</math:math>
</body>
</html>
W powyższym przykładzie elementy SVG i MathML mają własne, jasno wskazane przestrzenie nazw, dzięki czemu parser wie, jak je interpretować i renderować.
Dlaczego xmlns jest istotny?
- Rozszerzalność – umożliwia korzystanie z wielu standardów XML w jednym dokumencie;
- Brak konfliktów nazw – dwie różne technologie mogą mieć elementy o tej samej nazwie (
<title>), ale dziękixmlnsparser wie, do którego standardu się odwoływać; - Wymagania formalne – bez
xmlnsdokumenty XHTML mogą być niepoprawne zgodnie ze specyfikacją; - Poprawna walidacja – narzędzia do walidacji sprawdzają obecność i poprawność przestrzeni nazw.
Kiedy nie trzeba używać xmlns?
W nowoczesnych projektach opartych typowo o HTML5 nie musisz stosować atrybutu xmlns. Przeglądarki domyślnie traktują dokumenty HTML jako należące do przestrzeni nazw HTML5. xmlns nadal będzie poprawny, ale nie jest wymagany i zwykle nie ma żadnego wpływu na działanie strony.
Podsumowanie
Atrybut xmlns określa przynależność znaczników do konkretnej przestrzeni nazw XML. Jest niezbędny w dokumentach opartych na XML, takich jak XHTML, i pozwala na bezpieczne łączenie wielu technologii XML bez obawy o konflikt nazw elementów. Dzięki temu możesz wykorzystywać mocną strukturę XML w zgodnych standardach internetowych oraz korzystać m.in. ze standardów takich jak SVG czy MathML, zachowując pełną zgodność i czytelność kodu.