XML命名空间通过xmlns:前缀="URI"声明绑定,用前缀:本地名引用;前缀作用域限于声明元素及其子元素,URI仅作唯一标识;默认命名空间(xmlns="URI")影响无前缀名称,与带前缀命名空间互不干扰。
在XML中使用命名空间前缀,核心是通过xmlns:前缀="URI"声明绑定,并在元素
或属性中用前缀:本地名来引用该命名空间下的名称。
声明命名空间前缀
在起始标签(通常是根元素)中使用xmlns:前缀属性,将前缀与一个唯一的命名空间URI关联。URI只是标识符,不一定要可访问。
-
—— 声明前缀bk指向http://example.com/books - 前缀可以是任意合法的XML名称(如
ns、abc、xsi),但不能是xml(已预定义)或xmlns(用于声明本身)
在元素和属性中使用前缀
声明后,可在同一元素及其子元素中用前缀:本地名形式标记属于该命名空间的元素或属性。
-
——XML Guide bk:book和bk:title都属于http://example.com/books命名空间 -
Jane Doe—— 属性bk:lang也受该命名空间约束(除非显式声明为无命名空间)
区分默认命名空间与带前缀命名空间
默认命名空间(xmlns="URI")作用于当前元素及其未加前缀的子元素,但它不影响带前缀的名称;而前缀命名空间只对明确使用该前缀的名称生效。
-
——... - ...
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拼写完全一致(包括大小写和末尾斜杠),否则视为不同命名空间








