createElement vs. createElementNS

Jaka jest między nimi prawdziwa różnica? Mam na myśli prawdziwą, zasadniczą różnicę. Jaka jest przyszłość dla zwykłego createElement?

Svg to xml, nie html. Rozumiem. Więc używamy createElementNS(ns_string, 'svg') A potem setAttributeNS(null,,). Dlaczego? Dlaczego nie setAttributeNS('my_ns',,)?

Dlaczego ns_string musi być http://www.w3.org/2000/svg a nie jakimś przypadkowym ciągiem? Jaki jest cel przestrzeni nazw, jeśli istnieje tylko jedna przestrzeń nazw?

Jaki jest cel ns w zwykłym html? Czy powinienem zmienić wszystkie instancje createElement Na createElementNS w moim istniejącym kod?

Czytam DOM-Level-2 spec. ale nadal jestem zdziwiony.

Author: Wayne, 2011-11-17

1 answers

Aby zrozumieć problem, którego przestrzenie nazw próbują rozwiązać, rozważ rozszerzenia plików. 3-literowe rozszerzenia plików wykonały naprawdę złą robotę opisując zawartość plików. Są niejednoznaczne i nie zawierają informacji o wersji. Przestrzenie nazw XML używają większej przestrzeni łańcuchów, Uri, aby rozwiązać ten sam problem i używają krótkich prefiksów, dzięki czemu można zwięźle mieszać wiele rodzajów XML w tym samym dokumencie.

Jaki jest cel przestrzeni nazw, jeśli istnieje tylko jedna nazwa przestrzeń?

Istnieje wiele przestrzeni nazw używanych do identyfikacji różnych rodzajów XML i różnych wersji tego rodzaju.

SVG i MathML to dwa rodzaje XML, każdy z własnymi przestrzeniami nazw, które mogą być osadzone w HTML5, i często używają XLink, innej przestrzeni nazw XML. Wiele innych schematów XML, z odpowiadającymi im przestrzeniami nazw, służy do przesyłania wiadomości między klientami i serwerami oraz do przechowywania danych.

XHTML jest próbą wyrażenia HTML jako poprawnego XML. Ma swoje własna przestrzeń nazw.

Więc używamy createElementNS(ns_string, 'svg'), a następnie setAttributeNS (null,,). Dlaczego? Dlaczego nie setAttributeNS ('my_ns',,)???

Powinieneś prawdopodobnie próbować konsekwentnie używać setAttributeNS z URI przestrzeni nazw podczas używania createElementNS z URI przestrzeni nazw.

XML został zdefiniowany w wielu krokach. Pierwsza wersja spec nie mówiła nic o przestrzeniach nazw, ale pozostawiła wystarczająco dużo składni, aby XML z przestrzeniami nazw mógł być określony na górze XML bez przestrzeni nazw przez używanie prefiksów i specjalnych atrybutów xmlns. Specyfikacja XML mówi:

" Przestrzenie nazw w zaleceniu XML [nazwy XML] przypisują znaczenie nazwom zawierającym znaki dwukropka. Dlatego autorzy nie powinni używać dwukropka w nazwach XML z wyjątkiem przestrzeni nazw, ale procesory XML muszą zaakceptować dwukropek jako znak nazwy."

Przestrzenie nazw XML pozwalają aplikacjom przetwarzającym XML wiedzieć, z czym mają do czynienia i pozwalają na wiele rodzajów XML wymieszane w tym samym dokumencie.

Dlaczego ns_string musi być " http://www.w3.org/2000/svg "

Obejmuje to rok, w którym wersja SVG została znormalizowana, 2000, więc zawiera przydatne informacje.

Gdy jest używany z xmlns:svg, pozwala również przeglądarce wiedzieć, że prefiks svg: oznacza SVG, a nie jakiś inny dialekt XML.

 55
Author: Mike Samuel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-22 19:49:58