首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >XML名称空间是用来干什么的?

XML名称空间是用来干什么的?
EN

Stack Overflow用户
提问于 2008-09-24 17:03:38
回答 5查看 20.8K关注 0票数 75

我总是觉得很难向其他人解释这一点:为什么要存在XML名称空间?我们什么时候应该使用它们,什么时候不应该使用它们?在XML中使用名称空间时,常见的陷阱是什么?

另外,它们与XML模式有什么关系?XSD模式是否应该始终与名称空间相关联?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2008-09-24 17:08:27

它们允许组合多种标记语言,而不必担心元素和属性名称的冲突。

例如,查看任何一段XSLT代码,然后考虑如果不使用名称空间而试图编写一个XSLT,其中输出必须包含"template“、" For -each”等元素,会发生什么。语法错误,是什么。

我会把建议和陷阱留给比我更有经验的人。

票数 38
EN

Stack Overflow用户

发布于 2008-09-24 17:27:02

IMHO最大的陷阱是人机交互解释文档,例如开发代码来处理XML文档。关注文档的文字表达式而不是解析文档的信息集结果太容易了。

例如,以下节点

代码语言:javascript
复制
<a xmlns="uri:foo"/>
<foo:a xmlns:foo="uri:foo"/>
<bar:a xmlns:bar="uri:foo"/>

在语义上都是相同的--但对于天真的人来说却非常不同。

第一个例子产生了一个开发XPaths的非常常见的错误--遗漏了"a“在名称空间中的事实--因此//a不会产生匹配。(或者更糟糕的是,匹配不同名称空间中的节点!)

第三个例子打开了另一个理解上的缺陷--前缀文本在语义上是有意义的。在使用XPATH解析文档时,我可以声明任何我喜欢的前缀进行匹配,只要它的uri与文档的uri匹配即可。

票数 12
EN

Stack Overflow用户

发布于 2008-09-24 17:16:52

可以把它们看作是元素类型的姓氏。如果你有两个朋友,都叫Bob,而你正在谈论其中的一个,那么有人可能会问你说的是哪个Bob。只说"Bob“没有多大帮助,所以你就说"Bob Smith”或"Bob Jones“。

元素类型也是如此。有时一个简短的名字是不够的,因为不同的人可以选择相同的名字。因此,您需要包含一个URI作为“姓氏”,以区分不同的Bobs。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/128389

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档