对于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/n1在root元素和foo元素的范围内,但不在元素的范围内,bar因为它有自己的默认名称空间声明覆盖外部作用域之一.xmlns:pf2="http://example.com/ns2"但是,名称空间声明属于根元素及其所有后代的范围.
| 归档时间: |
|
| 查看次数: |
546 次 |
| 最近记录: |