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

XML:为什么我不能使用不同的名称空间?,xml,browser,xml-namespaces,w3c,Xml,Browser,Xml Namespaces,W3c,据我所知,名称空间URI不被访问,只代表您为避免名称冲突而选择的任何名称。那么,如果我更改名称空间,为什么下面的W3C示例会停止工作 浏览器是否使用URI字符串与存储在其中的其他字符串进行比较,以确定它是XML文件?这是因为有一个用于执行XSL的处理器,而您的示例中的命名空间是基本XSL命名空间,如果它是错误的URI,然后,处理器不知道将使用哪个XSL版本来应用转换。这是因为有一个处理器用于执行XSL,而您的示例中的名称空间是基本XSL名称空间,如果它是错误的URI,然后,处理器不知道将使用哪个

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


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

这是因为有一个用于执行XSL的处理器,而您的示例中的命名空间是基本XSL命名空间,如果它是错误的URI,然后,处理器不知道将使用哪个XSL版本来应用转换。

这是因为有一个处理器用于执行XSL,而您的示例中的名称空间是基本XSL名称空间,如果它是错误的URI,然后,处理器不知道将使用哪个XSL版本来应用转换。

名称空间的工作方式与人的姓氏类似。你可以有两个名字相同的人。你需要姓氏来区分它们

可以有两个具有相同本地名称的XML节点,例如,当它们位于两个不同的名称空间中时,它们是完全不同的节点,任何处理XML的操作都会识别出它们之间的差异*

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

因此,我不知道为什么更改名称空间会改变XML的含义会让您感到惊讶


*XSLT处理程序使用http://www.w3.org/1999/XSL/Transform 特别是命名空间。任何具有名称样式表且位于不同命名空间中的元素都将被忽略,您可以出于自己的目的自由使用它们。毕竟,这就是问题的关键所在。

名称空间就像人们的姓氏一样工作。你可以有两个名字相同的人。你需要姓氏来区分它们

可以有两个具有相同本地名称的XML节点,例如,当它们位于两个不同的名称空间中时,它们是完全不同的节点,任何处理XML的操作都会识别出它们之间的差异*

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

因此,我不知道为什么更改名称空间会改变XML的含义会让您感到惊讶



*XSLT处理程序使用http://www.w3.org/1999/XSL/Transform 特别是命名空间。任何具有名称样式表且位于不同命名空间中的元素都将被忽略,您可以出于自己的目的自由使用它们。毕竟,这就是重点。

这不是W3C的例子。W3Schools.com与W3C w3.org无关。您正在解释它可以防止名称冲突。但是,为什么你会奇怪这个机制实际上是以不同的名称工作的呢→ 不同的意义/功能?什么意思,它停止工作了。永远不要告诉我们某些东西不起作用,告诉我们它是如何失败的。@unor我不知道我是否得到了你的观察,但对我来说,它可以防止名称冲突,让每个元素使用不同的字符串序列;就这样。“这不应该意味着什么。”迈克尔凯,对不起。停止工作的意思是:不再显示XML。这不是W3C示例。W3Schools.com与W3C w3.org无关。您正在解释它可以防止名称冲突。但是,为什么你会奇怪这个机制实际上是以不同的名称工作的呢→ 不同的意义/功能?什么意思,它停止工作了。永远不要告诉我们某些东西不起作用,告诉我们它是如何失败的。@unor我不知道我是否得到了你的观察,但对我来说,它可以防止名称冲突,让每个元素使用不同的字符串序列;就这样。“这不应该意味着什么。”迈克尔凯,对不起。停止工作的意思是:不再显示XML了。那么,您是说,如果元素的名称空间严格等于,处理器只将元素视为XSL元素?与此类似,它首先检查该字符串是否对应于XSL名称空间,然后将正确的元素作为XSL元素进行处理?是的。为什么这么令人惊讶?在我看来,您认为名称空间只是一个属性。事实并非如此。它们是节点名称的实际物理部分。它们以属性形式出现,所以你不必每次都把它们写出来。这并不奇怪。我只是认为名称空间是自由选择的;处理器只是用它来区分元素,而不是在它的处理操作中。我想我明白了。因此,我可以使用自由名称空间来区分元素,但处理器不会识别特定操作的名称空间;但是像XML这样的名称空间会…对吗?如果有帮助的话,把它们想象成c
颜色。http://www.w3.org/1999/XSL/Transform 它是绿色的。XSLT处理器将绿色节点识别为指令。它可以读取所有其他节点,但不将它们视为指令。通过这种方式,您可以混合使用XSLT指令和其他XML,而不会混淆XSLT处理器。这就像在你最喜欢的编辑器中突出显示语法一样。如果在字符串内,你的大脑不会认为Word函数是特殊的。所以,你是说,如果命名空间严格等于命中,那么处理器只能看到元素作为XSL元素吗?与此类似,它首先检查该字符串是否对应于XSL名称空间,然后将正确的元素作为XSL元素进行处理?是的。为什么这么令人惊讶?在我看来,您认为名称空间只是一个属性。事实并非如此。它们是节点名称的实际物理部分。它们以属性形式出现,所以你不必每次都把它们写出来。这并不奇怪。我只是认为名称空间是自由选择的;处理器只是用它来区分元素,而不是在它的处理操作中。我想我明白了。因此,我可以使用自由名称空间来区分元素,但处理器不会识别特定操作的名称空间;但是像XML这样的名称空间会…对吗?如果有用的话,可以把它们看作颜色。http://www.w3.org/1999/XSL/Transform 它是绿色的。XSLT处理器将绿色节点识别为指令。它可以读取所有其他节点,但不将它们视为指令。通过这种方式,您可以混合使用XSLT指令和其他XML,而不会混淆XSLT处理器。这就像在你最喜欢的编辑器中突出显示语法一样。如果你的大脑在一个字符串里面,它不会认为这个词是特殊的。