[英]Proper use of External DTD for XML
我有以下文章。
<!ELEMENT ARTICLE (HEADLINE,BYLINE,LEAD,BODY,NOTES)>
<!ELEMENT HEADLINE (#PCDATA)>
<!ELEMENT BODY (#PCDATA)>
<!ATTLIST ARTICLE AUTHOR CDATA #REQUIRED>
和article.xml
<?xml version="1.0" standalone="no"?>
<!DOCTYPE ARTICLE SYSTEM "article.dtd">
<ARTICLE AUTHOR="T. Daniel">
<HEADLINE>Title</HEADLINE>
<BODY>Details</BODY>
</ARTICLE>
我使用Google Chrome瀏覽器打開xml文件,當我訪問頁面源代碼時,我只會得到article.xml的內容。
頁面源不應該合並兩個文件(同時顯示文檔類型定義和xml文檔)嗎? 如果是這樣,為什么在我的示例中沒有發生這種情況? 如果沒有,我應該如何檢查我的xml是否根據我想要的dtd文件編寫?
提及:article.dtd和article.xml在同一文件夾中。
頁面源不應該合並兩個文件(同時顯示文檔類型定義和xml文檔)嗎?
不,不應該合並兩個文件。
大多數瀏覽器不加載外部DTD。 我找不到關於Chrome的明確參考,但我認為它類似於Mozilla / Firefox的工作方式( https://developer.mozilla.org/en-US/docs/XML_in_Mozilla#DTDs_and_Other_External_Entities )。
我應該如何檢查我的xml是否根據我想要的dtd文件編寫?
通過適當的驗證器運行它,例如xmllint ( libxml2附帶的命令行工具):
$ xmllint --valid article.xml
此命令的輸出:
<?xml version="1.0" standalone="no"?>
<!DOCTYPE ARTICLE SYSTEM "article.dtd">
<ARTICLE AUTHOR="T. Daniel">
<HEADLINE>Title</HEADLINE>
<BODY>Details</BODY>
</ARTICLE>
article.xml:6: element ARTICLE: validity error : Element ARTICLE content does not follow the DTD, expecting (HEADLINE , BYLINE , LEAD , BODY , NOTES), got (HEADLINE BODY )
</ARTICLE>
^
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.