[英]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.