Node#

Node.lookupNamespaceURI()#

Metoda lookupNamespaceURI() zwraca przestrzeń nazw pasującą do przekazanego prefiksu przestrzeni nazw dla danego węzła. W przypadku braku dopasowania zwrócona zostanie wartość null.

Opis działania#

Samo wywołanie i poszczególne jego części najlepiej objaśnić na zapisie składniowym:

  1. L
  2. K
  3. T'
  4. T
  5. A
  6. O
  7. Z'
  8. Z
  9. #
var namespace = node.lookupNamespaceURI(prefix);

gdzie poszczególne człony oznaczają:

Algorytm wywołania metody lookupNamespaceURI(prefix) nie jest skomplikowany. Dla lepszego zrozumienia tematu prezentuję go w całości:

  1. Jeśli prefix jest pustym łańcuchem znakowym, to ustaw go na wartość null.
  2. Zwróć wynik lokalizacji przestrzeni nazw dla obiektu kontekstu z przekazaniem prefix.

Analizując dokładnie wszystkie powiązane z metodą lookupNamespaceURI() algorytmy można zauważyć, że sprawdzanie przestrzeni nazw powiązanej z przekazanym prefiksem przestrzeni nazw może przechodzić na inne węzły (zawsze są to elementy), wszystko zależy od rodzaju aktualnie weryfikowanego węzła.

Warto podkreślić, że przekazanie do metody lookupNamespaceURI() wartości null lub pustego łańcucha znakowego zaowocuje tym, że wyszukiwana będzie domyślna przestrzeń nazw dla danego węzła. Praktycznie rzecz biorąc, to metoda lookupNamespaceURI() w połączeniu z kilkoma dodatkowymi linijkami kodu pozwala zasymulować metodę Node.isDefaultNamespace().

Prosty przykład:

  1. L
  2. K
  3. T'
  4. T
  5. A
  6. O
  7. Z'
  8. Z
  9. #
<script>

	document.write(document.lookupNamespaceURI("")); // http://www.w3.org/1999/xhtml - przechodzi na HTML
	document.write("<br>");
	document.write(document.lookupNamespaceURI(null)); // http://www.w3.org/1999/xhtml - przechodzi na HTML
	document.write("<br>");
	document.write(document.documentElement.namespaceURI); // http://www.w3.org/1999/xhtml - dla HTML
	document.write("<br>");
	document.write(document.documentElement.prefix); // null - dla HTML

	document.write("<br><br>");

	// Tworzymy nowe elementy z różnymi przestrzeniami nazw i prefiksami
	var newDiv = document.createElementNS("www.test.pl", "ns:div");
	var newTest = document.createElementNS("www.test.pl", "test");
	var newP = document.createElement("p");

	newDiv.appendChild(newTest);
	newDiv.appendChild(newP);

	// Odczytujemy przestrzeń nazw i prefiks ustawione w czasie tworzenia węzła
	document.write(newDiv.namespaceURI + " | " + newDiv.prefix); // www.test.pl | ns
	document.write("<br>");
	document.write(newTest.namespaceURI  + " | " + newTest.prefix); // www.test.pl | null
	document.write("<br>");
	document.write(newP.namespaceURI  + " | " + newP.prefix); // http://www.w3.org/1999/xhtml | null

	document.write("<br><br>");

	// Wyszukujemy przestrzeń nazw pasującą do przekazanego prefiksu (która może być odczytywana z rodzica węzła)
	document.write(newDiv.lookupNamespaceURI("ns")); // www.test.pl
	document.write("<br>");
	document.write(newTest.lookupNamespaceURI("ns")); // www.test.pl - sprawdzanie przeszło z newTest na rodzica newDiv
	document.write("<br>");
	document.write(newP.lookupNamespaceURI("ns")); // www.test.pl - sprawdzanie przeszło z newP na rodzica newDiv

	document.write("<br><br>");

	document.write(document.createDocumentFragment().lookupNamespaceURI("")); // null
	document.write("<br>");
	document.write(document.createDocumentFragment().lookupNamespaceURI(null)); // null

</script>

Na chwilę obecną żadna aktualna przeglądarka nie obsługuje metody lookupNamespaceURI() zgodnie ze wszystkimi wymaganiami specyfikacji DOM4. Wynika to z odmiennego sposobu ustawiania i eksponowania domyślnej przestrzeni nazw w elementach. Oczekuje się, że w niedalekiej przyszłości wszystkie te nieścisłości zostaną wyeliminowane (DOM - Bug 27456, Mozilla - Bug 1061578).

Składnia Web IDL#

  1. L
  2. K
  3. T'
  4. T
  5. A
  6. O
  7. Z'
  8. Z
  9. #
interface Node : EventTarget {
	DOMString? lookupNamespaceURI(DOMString? prefix);
}

Specyfikacje i inne materiały#

Pasek społecznościowy

SPIS TREŚCI AKTUALNEJ STRONY

Node (H1) Node.lookupNamespaceURI() (H2) Opis działania (H3) Składnia Web IDL (H3) Specyfikacje i inne materiały (H3)