xml命名空间通过xmlns:前缀="uri"声明绑定,用前缀:本地名引用;前缀作用域限于声明元素及其子元素,uri仅作唯一标识;默认命名空间(xmlns="uri")影响无前缀名称,与带前缀命名空间互不干扰。

在XML中使用命名空间前缀,核心是通过xmlns:前缀="URI"声明绑定,并在元素或属性中用前缀:本地名来引用该命名空间下的名称。
声明命名空间前缀
在起始标签(通常是根元素)中使用xmlns:前缀属性,将前缀与一个唯一的命名空间URI关联。URI只是标识符,不一定要可访问。
-
<bookstore xmlns:bk="http://example.com/books"></bookstore>—— 声明前缀bk指向http://example.com/books - 前缀可以是任意合法的XML名称(如
ns、abc、xsi),但不能是xml(已预定义)或xmlns(用于声明本身)
在元素和属性中使用前缀
声明后,可在同一元素及其子元素中用前缀:本地名形式标记属于该命名空间的元素或属性。
本文档主要讲述的是Python之模块学习;python是由一系列的模块组成的,每个模块就是一个py为后缀的文件,同时模块也是一个命名空间,从而避免了变量名称冲突的问题。模块我们就可以理解为lib库,如果需要使用某个模块中的函数或对象,则要导入这个模块才可以使用,除了系统默认的模块(内置函数)不需要导入外。希望本文档会给有需要的朋友带来帮助;感兴趣的朋友可以过来看看
-
<book><title>XML Guide</title></book>——bk:book和bk:title都属于http://example.com/books命名空间 -
<author bk:lang="en">Jane Doe</author>—— 属性bk:lang也受该命名空间约束(除非显式声明为无命名空间)
区分默认命名空间与带前缀命名空间
默认命名空间(xmlns="URI")作用于当前元素及其未加前缀的子元素,但它不影响带前缀的名称;而前缀命名空间只对明确使用该前缀的名称生效。
-
<root xmlns="http://default.com" xmlns:ext="http://extra.com"><element>...</element><item>...</item></root>——element属于默认命名空间,ext:item属于http://extra.com - 避免混用:不要用
xmlns=""意外取消默认命名空间,导致预期外的无命名空间元素
常见注意事项
命名空间前缀的作用域从声明处开始,到对应结束标签为止;嵌套声明会覆盖同名前缀;解析器按URI而非前缀识别命名空间。
- 前缀本身无语义,
bk:book和lib:book只要URI相同,就表示同一个命名空间中的同名元素 - XML Schema实例常用
xsi:type,其中xsi必须声明为xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - 确保URI拼写完全一致(包括大小写和末尾斜杠),否则视为不同命名空间









