[英]How XML namespaces are validated on W3C validator?
我有两个文件:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="210mm"
height="297mm"
viewBox="0 0 210 297"
version="1.1"
id="svg5"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
inkscape:version="1.1.1 (c3084ef, 2021-09-22)"
xmlns="http://www.w3.org/2000/svg">
</svg>
这个在 W3C 验证器上验证得很好。 但是一旦我编辑命名空间,即xmlns:inkscape
中的 URI,它就会开始失败:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
width="210mm"
height="297mm"
viewBox="0 0 210 297"
version="1.1"
id="svg5"
xmlns:inkscape="http://www.inkscape.org/namespaces/ABC"
inkscape:version="1.1.1 (c3084ef, 2021-09-22)"
xmlns="http://www.w3.org/2000/svg">
</svg>
它给了我这个错误:
第 10 行,第 38 列:来自命名空间http://www.inkscape.org/namespaces/ABC的属性版本在 SVG 元素 svg 上不允许。
我使用https://validator.w3.org/来验证它。 我必须将这些上传为.svg
文件。 我无法将其粘贴到直接输入中,因为它没有检测到格式,并且在手动选择中没有这样的选择( SVG 1.1 + URL + HTML + MathML 3.0
在 A A 文件上传中检测到)。
这里发生了什么样的黑魔法? 我认为这些 URI 的格式非常自由,但看起来 W3C 验证器从某个地方提取了某种模式,即使没有指定任何内容。
我还注意到我可以将命名空间重命名为其他名称,只要我保持相同的 URI,它就可以正常工作。
命名空间的验证如何工作? 我只是想将我的自定义命名空间添加到我的 SVG 文件中......
通过查看来源可以找到“魔法”:
所有没有DOCTYPE
声明的文件,以及所有具有.svg
扩展名的文件都由Nu Html 检查器进行检查:
# we send doctypeless SVG, or any doctypeless XML document with multiple # namespaces found, to a different engine. WARNING this is experimental.
如您所见,此验证器将文件标识为SVG 1.1 + URL + HTML + MathML 3.0
。 这些文件通过名为svg-xhtml5-rdf-mathml.rnc
的 Relax NG 方案进行检查。 并且该文件明确地检查了 inkscape 命名空间。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.