XML—试图掌握名称空间URI的概念

XML—试图掌握名称空间URI的概念,xml,url,uri,transformer,urn,Xml,Url,Uri,Transformer,Urn,如果我的XSL具有以下标题,则不会出现错误: <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 我想我不理解名称空间URI的概念,因为我认为它可以是任何URL,更不用说URN了,只要它在XML/XSL文档中是唯一的。显然不是。我试图改变URI来测试这个理论 在,我们可以阅读以下声明: 解析器不使用名称空间URI来查找信息 使用URI的目的是为命名空间提供唯一的名称 但是,公司通常使

如果我的XSL具有以下标题,则不会出现错误:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
我想我不理解名称空间URI的概念,因为我认为它可以是任何URL,更不用说URN了,只要它在XML/XSL文档中是唯一的。显然不是。我试图改变URI来测试这个理论

在,我们可以阅读以下声明:

解析器不使用名称空间URI来查找信息

使用URI的目的是为命名空间提供唯一的名称

但是,公司通常使用名称空间作为指向包含名称空间信息的网页的指针

第一条语句意味着我们不关心URI指向的网页是什么,所以为什么我不能将它设置为指向我想要的任何网页,或者甚至是不存在的网页?为什么一定要特别注意呢

此外,稍后在上述链接中,我们可以阅读:

统一资源标识符URI是标识Internet资源的字符串

因此,由于这一点,并且因为使用URI的目的是给名称空间一个唯一的名称,这是否意味着名称空间URI必须再次成为URL,更不用说我绝对无法理解的URN,这意味着我无法设置这样的名称空间:

xlmns:foo="A_random_but_unique_string"
最后,我将引用同一链接中的这句话:

名称空间标识HTML文档中的XSLT元素


因此,现在这意味着解析器必须使用名称空间URL来查找名称空间元素的信息,不是吗?

它与解析URL和下载模式无关。尽管两个示例中的XML看起来都一样:xsl:stylesheet,但您的输入被读取为名称空间标识的样式表元素https://www.w3schools.com/xml/xml_namespaces.asp.


Java程序需要一个由名称空间标识的样式表元素http://www.w3.org/1999/XSL/Transform 但是,由于找不到,它会抛出一个异常。

感谢您的回复。如果它甚至不需要从这个URL提取任何信息,为什么它希望从URI标识的名称空间中得到一个样式表元素?我的意思是,Java程序不知道这个URL中的样式表元素是什么!不管URI是什么,样式表都是样式表。因为样式表不是随机/自定义格式,而是w3标准。Java已经有了这个标准的模式定义XSD,因此在准备转换时,它会尝试看看这是否符合它的期望。它不知道如何解释来自w3的样式表,但它知道它可以解析/解释验证w3.org样式表模式的XML文件,该模式由。。。简而言之:根据样式表的XSD,具有W3URI的样式表无效。
javax.xml.transform.TransformerConfigurationException 
xlmns:foo="A_random_but_unique_string"