2010-12-08 3 views

ответ

9

Для модели 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", однако, доступно для корневого элемента и всех его потомков.

+0

Большое спасибо, что отличное объяснение – skystar7 2010-12-08 10:02:49

Смежные вопросы