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

XML: Why can't I use a different namespace?

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

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

浏览器是否使用 URI 字符串与其中存储的其他一些内容进行比较,从而知道它是一个 XML 文件?

因为有一个处理器用来执行XSL,而你的命名空间是"basic"XSL命名空间,如果URI错误,那么处理器不知道你要的是哪个XSL版本用于应用转换。

命名空间就像人们的姓氏一样。您可以有两个同名的人。你需要姓氏来区分他们。

您可以有两个 XML 具有相同本地名称的节点(如 <stylesheet>),当它们位于两个不同的命名空间时,它们是 完全不同的节点 和任何处理 XML 的东西都会识别出差异。 (*)

这对 XML 来说没什么特别的,这就是名称空间在任何地方的工作方式。在大多数编程语言中,您可以有两个具有相同名称的不同函数,当它们位于不同的命名空间时,编译器可以区分它们。

所以我不确定为什么您对更改命名空间会更改 XML.

的含义感到惊讶

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