据我所知,名称空间URI不会被访问,但只代表您选择的任何名称,以避免名称冲突。那么,如果我更改命名空间,为什么以下W3C示例会停止工作?
http://www.w3schools.com/xsl/tryxslt.asp?xmlfile=cdcatalog&xsltfile=cdcatalog
浏览器是否使用URI字符串与存储在其中的其他字符串进行比较,以确定它是XML文件?
答案 0 :(得分:4)
命名空间的工作方式与人们的姓氏相同。您可以让两个人使用相同的名字。你需要姓氏来区分它们。
您可以拥有两个具有相同本地名称的XML节点(如<stylesheet>
),当它们位于两个不同的命名空间中时,它们是完全不同的节点,并且处理XML的任何内容都将识别区别。 (*)
这对XML来说并不特别,这就是命名空间在各处工作的方式。在大多数编程语言中,您可以使用两个具有相同名称的不同函数,当它们位于不同的名称空间中时,编译器可以将它们分开。
因此,我不确定为什么您更改名称空间会改变XML的含义而感到惊讶。
(*) XSLT处理器与<stylesheet>
命名空间中的"http://www.w3.org/1999/XSL/Transform"
(以及其他几个)元素一起使用。名称为stylesheet
且位于不同命名空间的任何元素都将被忽略,您可以将它们用于您自己的目的。毕竟,这就是重点。
答案 1 :(得分:0)
这是因为有一个处理器用于执行XSL,你的案例中的命名空间是“基本的”XSL命名空间,如果它是一个错误的URI,那么处理器不知道你将使用哪个XSL版本来应用转化