Бөлісу құралы:


Поддержка пространств имен в модели DOM

Модель XML DOM полностью построена на пространствах имен. Поддерживаются только XML-документы, где определены пространства имен. По спецификации W3C приложения DOM, реализующие уровень 1, могут не учитывать пространства имен, а возможности уровня 2 модели DOM учитывают пространства имен. Однако в модели XML DOM все функции учитывают пространства имен, независимо о того, соответствует ли метод рекомендации для уровня 1 или уровня 2 модели DOM.

Например, в среде без учета пространств имен вызов setAttribute("A:b", "123") согласно рекомендации для уровня 1 модели DOM не возвратит атрибут с префиксом A и локальным именем b. Вместо этого будет получен атрибут со значением A:b.

В среде с поддержкой пространств имен вызов метода setAttribute("A:b", "123") уровня 2 модели DOM возвратит атрибут с префиксом A и локальным именем b. Так работает модель DOM в платформе Microsoft .NET Framework.

Поэтому все методы, принимающие параметр имени, также принимают префикс, дополняющий имя. Параметр имени, такой как A:b в методе setAttribute уровня 1 модели DOM, проходит синтаксический анализ следующим образом.

  • Если отсутствуют символы двоеточия (:), локальное имя получает значение параметра name, а строки для префикса и NamespaceURI будут пустыми.

  • Если обнаружено двоеточие, имя разбивается на две части в зависимости от позиции первого символа двоеточия. Префикс получает значение строки, расположенной перед двоеточием, а локальным именем становится строка, расположенная после двоеточия. Для методов, не принимающих значение NamespaceURI, оно не разрешается и остается пустой строкой. В противном случае NamespaceURI получает значение строки, переданной методу. Если префикс не определен, метод Save и свойства InnerXml и OuterXml завершаются с ошибкой.

См. также