我总是想知道XML解析器如何处理URI命名空间的检查。是基于字符串还是基于URI?换句话说,这是SVG的标准URI
xmlns="http://www.w3.org/2000/svg"
假设我写了
xmlns="http://www.w3.org/2000/../2000/svg"
或
xmlns="http://www.w3.org/2000/svg/"
甚至
xmlns="http://www.w3.org:8000/2000/svg"
这些情况是否会被识别为svg名称空间(基于URI)或不识别(基于字符串)?
由于
编辑:您可以使用URN(如uuid)这一事实让我觉得它是基于字符串的,因为您无法将正确的URL / URI注意事项应用于非类似URL的URI。但也许在这种情况下,它只是作为字符串工作?
编辑:正如Tormod指出的那样,它是通过字符串比较进行的。这提示我想知道是否存在定义URI的建议(例如:最后没有斜杠,全部小写等等)。或者它只是一个免费的?
答案 0 :(得分:6)
它们是基于字符串的。所有示例URI都解析为不同的名称空间。
http://www.w3.org/TR/REC-xml-names/#NSNameComparison
在确定名称是否属于给定名称空间以及两个名称是否属于同一名称空间时,会比较标识名称空间的URI引用。 [定义:两个URI被视为字符串,当且仅当字符串相同时,它们是相同的,即,如果它们是相同的字符序列。 ]比较区分大小写,并且没有%-escaping完成或撤消。