簡體   English   中英

如何在 W3C 驗證器上驗證 XML 命名空間?

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

通過查看來源可以找到“魔法”:

  1. 所有沒有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.
  2. 如您所見,此驗證器將文件標識SVG 1.1 + URL + HTML + MathML 3.0 這些文件通過名為svg-xhtml5-rdf-mathml.rnc的 Relax NG 方案進行檢查。 並且該文件明確地檢查了 inkscape 命名空間

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM