XML命名空间的用途是什么?

25 浏览
0 Comments

XML命名空间的用途是什么?

我总觉得有些难以向别人解释:为什么XML命名空间存在?我们何时使用它们,何时不使用它们?在使用XML命名空间时,常见的陷阱有哪些?

此外,它们又与XML模式相关吗?XSD模式始终应与命名空间相关联吗?

admin 更改状态以发布 2023年5月19日
0
0 Comments

为什么存在XML命名空间?\n\n因为在1997年,W3C的一些非常有影响力的人想要它们,而且并不会轻易接受拒绝的回答。即使已经可以明确地证明,他们认为存在的“问题”有更好的解决方法,他们仍然行使影响力,将他们的愿望写入W3C推荐中。\n\n围绕XML命名空间的神话中最大的谎言是它们有技术价值。(这是推荐存在并占据心智空间的下游效应——“咦,一定(存在好的)原因!”——与有记忆点反之。)\n\n我们什么时候应该使用它们,什么时候不应该?\n\n如果您能避免使用它们,那么永远不应该使用它们。不幸的是,由于利益相关者对这一劣质设备的不懈推广,导致了今天簇状规范的困境,这使得在某个时候不得不处理XML命名空间几乎是不可能的。因此,即使您自己避免使用XML命名空间,您会发现从各个方向涌来的命名空间包裹的废物,或更糟糕的是,工具集只有在您提供这些废物时才能正常工作。\n\n在XML命名空间中工作时的常见陷阱是什么?\n\n其中一个非常常见的陷阱是在具有“默认”命名空间的文档中使用Xpath表达式:表达式中将必须显式指定命名空间。另一个问题是在构造文档时“正确”使用它们:它们会“无理之举地”制造问题。\n\n此外,它们与XML模式如何关联?XSD模式是否始终与命名空间相关?\n\n除了XSD模式规范在委员会中几乎每个人都有XML命名空间这一点之外,没有必要的关系。因此,可以使用无命名空间的XSD模式,但是几乎所有支持XSD模式的工具集都会假定您“想要”使用命名空间,这是一种严峻的上坡路。

0
0 Comments

它们是用于允许多个标记语言组合在一起,而无需担心元素和属性名称的冲突。

例如,看一下任何一段XSLT代码,然后想想如果您不使用命名空间,并且正在尝试编写一个XSLT,其中输出必须包含"template"、"for-each"等元素,会发生什么情况。语法错误。

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

0