XML命名空间的核心作用是解决元素和属性重名问题,通过唯一URI区分不同标准的同名元素,前缀仅为URI的别名;声明方式包括带前缀的xmlns:prefix="URI"和默认的xmlns="URI",后者仅作用于元素且全文档唯一;命名空间作用域遵循就近原则,属性不继承默认命名空间,需显式加前缀;实际解析时必须严格匹配URI(大小写敏感)并注册命名空间映射。

XML命名空间(namespace)的核心作用是解决元素和属性重名问题——比如两个不同标准都定义了 用 省去每个元素写前缀的麻烦,适用于整块结构统一归属同一规范: 命名空间声明不是全局生效,而是遵循“就近原则”: 写XML只是第一步,真正使用时(如XPath查询、XSLT转换、C#或Java解析)需严格匹配命名空间:,解析器靠命名空间URI来区分它们属于哪个“家族”。关键不在前缀(如
h: 或 f:),而在于背后的URI(如 http://www.w3.org/TR/html4/),前缀只是方便书写和阅读的别名。
怎么声明命名空间:xmlns:前缀="URI"
xmlns:前缀 属性绑定一个唯一URI,该前缀即可用于限定后续元素:
表示所有 h:xxx 元素属于HTML4语义 中的每个标签都被明确归入该命名空间A h、html、x 都可以),但URI必须全局唯一,通常用网址形式(不强制可访问)默认命名空间:xmlns="URI"
→ 自动属于该URI下xmlns:dc="http://purl.org/dc/elements/1.1/"),则 和 就分属不同空间命名空间的作用范围与位置
),则只对该元素及其所有后代中未被其他声明覆盖的部分有效)实际解析时要注意什么
dc:date,不能只写 //date,得注册命名空间映射,再用 //dc:date
XDocument、Java的 DocumentBuilder 都要求显式提供命名空间上下文,否则查不到带前缀的节点http://example.com/ns 和 http://example.com/NS 被视为两个不同空间










