Что такое пространство имен в пространстве в отношении XPath?Что такое пространство имен в пространстве по отношению к XPath?
Благодаря
Что такое пространство имен в пространстве в отношении XPath?Что такое пространство имен в пространстве по отношению к XPath?
Благодаря
Для модели XSLT/XPath данных 1.0 спецификации XPath 1.0 в http://www.w3.org/TR/xpath/#namespace-nodes говорит следующее о namespace nodes
:
Каждый элемент имеет связанный с ним набор узлов пространства имен, по одному для каждого отдельного префикс пространства имен, который находится в области . Элемент (включая префикс xml, , который неявно объявлен с помощью Рекомендации XML Namespaces [XML Имена]) и один для поля имен по умолчанию, если он имеет значение для элемента .
декларации пространств имен и их объем определены в спецификации Пространства имен XML, http://www.w3.org/TR/xml-names/#scoping говорит:
Область действия объявления пространства имен объявить префикс простирается от начала начального тега, в котором то отображается в конце соответствующих концевых тегов, за исключением области с любыми внутренними объявлениями с той же частью NSAttName. В случае пустого тега область - это тег .
Такое объявление пространства имен применяется ко всем имен элементов и атрибутов в пределах его объема, префикс соответствует , что указанный в декларации.
И http://www.w3.org/TR/xml-names/#defaulting говорит следующее о масштабах любого объявления пространства имен по умолчанию (т.е. xmlns="http://example.com/ns1
):
Объем пространства имен по умолчанию декларации простирается от начала стартового тега, в котором он появляется до конца соответствующего конечного тега, за исключением области любых внутренних деклараций пространства имен. В случае пустого тега область - это сам тег.
Чтобы дать вам пример, с
<root xmlns="http://example.com/n1" xmlns:pf2="http://example.com/ns2">
<foo>
<bar xmlns="http://example.com/ns3">whatever</bar>
</foo>
</root>
декларация http://example.com/n1
пространства имен по умолчанию находится в области видимости для root
элемента и foo
элемента, но не для bar
элемента, который имеет свое собственное пространство имен по умолчанию объявление переопределяет один из внешних границ. Объявление пространства имен xmlns:pf2="http://example.com/ns2"
, однако, доступно для корневого элемента и всех его потомков.
Большое спасибо, что отличное объяснение – skystar7 2010-12-08 10:02:49