簡體   English   中英

正確使用XML的外部DTD

[英]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文件編寫?

通過適當的驗證器運行它,例如xmllintlibxml2附帶的命令行工具):

$ 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.

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