首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

DOCTYPE 聲明錯誤排查:SVG 文件誤用 HTML 4.0 文檔類型

     編輯:程式設計綜合問答

錯誤信息:`multiple markers at this line - missing space - white spaces are required between publicid and systemid`

問題代碼

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">

錯誤原因

  1. 文檔類型不匹配:SVG 文件必須使用 SVG DTD,而非 HTML DTD。
  2. 語法格式錯誤:`PUBLIC "publicId" "systemId"` 之間**必須有空格**,示例中缺少空格導致解析器報錯。
  3. 版本過時:HTML 2.0 (1995) 極其古老,現代瀏覽器僅為兼容保留解析模式。

正確的 SVG 文檔聲明

SVG 1.1 完整版(推薦生產)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 
  "https://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="https://www.w3.org/2000/svg" version="1.1">...</svg>

SVG 1.1 基礎版(輕量)

<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Basic//EN" 
  "https://www.w3.org/Graphics/SVG/1.1/DTD/svg11-basic.dtd">

SVG Tiny 1.2(移動/嵌入式)

<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG Tiny 1.2//EN" 
  "https://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">

現代最佳實踐:省略 DOCTYPE

HTML5/SVG2 時代,**建議完全省略 DOCTYPE**,直接用命名空間聲明:

<svg xmlns="https://www.w3.org/2000/svg" xmlns:xlink="https://www.w3.org/1999/xlink">
  <!-- SVG 內容 -->
</svg>
  • 瀏覽器按「標準模式」解析,無 DTD 依賴。
  • 文件體積更小,解析更快。
  • 避免 DTD 外部實體攻擊(XXE)風險。

參考:W3C SVG 1.1 規範 | W3C 推薦 DOCTYPE 列表

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved