关于XML命名空间及默认命名空间工作机制的疑问与示例验证
你的判断完全正确!
咱们来逐个拆解这个XML里的命名空间细节,帮你再巩固下理解:
默认命名空间(共2个)
- 第一个默认命名空间:
<recherche>元素上的xmlns="http://www.google.com/",它会作用于<recherche>本身,以及它下面所有无前缀且未被其他默认命名空间覆盖的子元素(比如<nombre>就继承了这个默认命名空间)。 - 第二个默认命名空间:
<mots-clefs>元素上的xmlns="http://www.yahoo.com/",它覆盖了父元素的默认命名空间,仅作用于<mots-clefs>元素及其内部的文本内容。
带前缀的命名空间(共2个)
- 第一个带前缀命名空间:
<recherche>元素上的xmlns:yahoo="http://www.yahoo.com/",前缀为yahoo,后续使用yahoo:前缀的元素(比如<yahoo:mot>)都属于这个命名空间。 - 第二个带前缀命名空间:
<yahoo:mot>元素上的xmlns:yahoo2="http://www.yahoo.com/",前缀为yahoo2——虽然它和yahoo前缀指向同一个URI,但在XML规则里,这是两个独立的命名空间声明(只是绑定了相同的资源标识)。
额外补充个小细节:<nombre>元素既没有自己的命名空间声明,也没有前缀,所以它会继承最近的父级默认命名空间,也就是<recherche>的http://www.google.com/。
内容的提问来源于stack exchange,提问作者Julien Roussel
相关产品推荐
相关产品推荐

