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.
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.
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