Подтвердить что ты не робот

CreateElement против createElementNS

Какая реальная разница между этими двумя? Я имею в виду реальную, существенную разницу. Какое будущее удерживает регулярный createElement?

Svg - это xml, а не html. Я понимаю. Поэтому мы используем createElementNS(ns_string, 'svg') А затем setAttributeNS(null,,). Зачем? Почему бы не setAttributeNS('my_ns',,)?

Почему ns_string должен быть http://www.w3.org/2000/svg, а не какой-либо случайной строкой? Какова цель пространства имен, если существует только одно пространство имен?

Какова цель ns в регулярном html? Должен ли я изменить все экземпляры createElement на createElementNS в моем существующем коде?

Я читаю спецификацию DOM-Level-2. но я все еще озадачен.

4b9b3361

Ответ 1

Чтобы понять проблему, пространство имен пытается решить, рассмотрите расширения файлов. 3-буквенные расширения файлов сделали очень плохую работу по описанию содержимого файлов. Они неоднозначны и не содержат информацию о версии. Пространства имен XML используют большее пространство строк, URI, для решения одной и той же проблемы и используют короткие префиксы, чтобы вы могли кратко комбинировать несколько видов XML в одном документе.

Какова цель пространства имен, если существует только одно пространство имен?

Существует много пространств имен, используемых для идентификации различных типов XML и разных версий такого рода.

SVG и MathML представляют собой два типа XML, каждый из которых имеет собственные пространства имен, которые могут быть встроены в HTML5, и они часто используют XLink, другое пространство имен XML. Многие другие схемы XML с соответствующими пространствами имен используются для передачи сообщений между клиентами и серверами и для хранения данных.

XHTML - это попытка выразить HTML как допустимый XML. Он имеет собственное пространство имен.

Итак, мы используем createElementNS (ns_string, 'svg'), а затем setAttributeNS (null,). Зачем? Почему бы не setAttributeNS ('my_ns',)???

Вероятно, вы должны последовательно использовать setAttributeNS с URI пространства имен при использовании createElementNS с URI пространства имен.

XML был определен в несколько этапов. Первая версия спецификации ничего не говорила об пространствах имен, но оставила достаточно синтаксиса, чтобы XML с пространствами имен мог быть указан поверх XML без пространств имен, используя префиксы и специальные атрибуты xmlns. спецификация XML говорит:

"Пространства имен в XML-рекомендации [Имена XML] присваивают значение именам, содержащим символы двоеточия. Поэтому авторы не должны использовать двоеточие в именах XML, кроме целей пространства имен, но XML-процессоры должны принимать двоеточие в качестве символа имени."

пространства имен XML позволяют приложениям обработки XML знать, с чем они имеют дело, и позволяют смешивать несколько типов XML в одном документе.

Почему ns_string должен быть " http://www.w3.org/2000/svg"

Это включает год, когда версия SVG была стандартизирована, 2000, поэтому она содержит полезную информацию.

При использовании с xmlns:svg он также позволяет браузеру знать, что префикс svg: означает SVG, а не какой-либо другой диалект XML.