什么是与XPath相关的范围内命名空间?

sky*_*ar7 3 xml xpath

什么是与XPath相关的范围内命名空间?

谢谢

Mar*_*nen 9

对于XSLT/XPath 1.0数据模型,http : //www.w3.org/TR/xpath/#namespace-nodes中的XPath 1.0规范说明如下namespace nodes:

每个元素都有一组关联的命名空间节点,一个用于元素范围内的每个不同的命名空间前缀(包括xml前缀,由XML命名空间建议[XML名称]隐式声明),另一个用于默认命名空间.一个是元素的范围.

名称空间声明及其作用域在XML名称空间规范中定义,http://www.w3.org/TR/xml-names/#scoping说:

声明前缀的名称空间声明的范围从它出现的start-tag的开头延伸到相应的end-tag的末尾,不包括具有相同NSAttName部分的任何内部声明的范围.对于空标记,范围是标记本身.

此类名称空间声明适用于其范围内的所有元素和属性名称,其前缀与声明中指定的前缀相匹配.

http://www.w3.org/TR/xml-names/#defaulting说以下任何默认命名空间声明的范围(即xmlns="http://example.com/ns1):

默认命名空间声明的范围从它出现的start-tag的开头延伸到相应的end-tag的末尾,不包括任何内部默认命名空间声明的范围.对于空标记,范围是标记本身.

举个例子,给你一个

<root xmlns="http://example.com/n1" xmlns:pf2="http://example.com/ns2">
  <foo>
    <bar xmlns="http://example.com/ns3">whatever</bar>
  </foo>
</root>
Run Code Online (Sandbox Code Playgroud)

默认的名称空间声明http://example.com/n1root元素和foo元素的范围内,但不在元素的范围内,bar因为它有自己的默认名称空间声明覆盖外部作用域之一.xmlns:pf2="http://example.com/ns2"但是,名称空间声明属于根元素及其所有后代的范围.