XML:为什么我不能使用不同的命名空间?

时间:2015-04-12 01:22:25

标签: xml browser xml-namespaces w3c

据我所知,名称空间URI不会被访问,但只代表您选择的任何名称,以避免名称冲突。那么,如果我更改命名空间,为什么以下W3C示例会停止工作?

http://www.w3schools.com/xsl/tryxslt.asp?xmlfile=cdcatalog&xsltfile=cdcatalog

浏览器是否使用URI字符串与存储在其中的其他字符串进行比较,以确定它是XML文件?

2 个答案:

答案 0 :(得分:4)

命名空间的工作方式与人们的姓氏相同。您可以让两个人使用相同的名字。你需要姓氏来区分它们。

您可以拥有两个具有相同本地名称的XML节点(如<stylesheet>),当它们位于两个不同的命名空间中时,它们是完全不同的节点,并且处理XML的任何内容都将识别区别。 (*)

这对XML来说并不特别,这就是命名空间在各处工作的方式。在大多数编程语言中,您可以使用两个具有相同名称的不同函数,当它们位于不同的名称空间中时,编译器可以将它们分开。

因此,我不确定为什么您更改名称空间会改变XML的含义而感到惊讶。


(*) XSLT处理器与<stylesheet>命名空间中的"http://www.w3.org/1999/XSL/Transform"(以及其他几个)元素一起使用。名称为stylesheet且位于不同命名空间的任何元素都将被忽略,您可以将它们用于您自己的目的。毕竟,这就是重点。

答案 1 :(得分:0)

这是因为有一个处理器用于执行XSL,你的案例中的命名空间是“基本的”XSL命名空间,如果它是一个错误的URI,那么处理器不知道你将使用哪个XSL版本来应用转化