2014-06-30 4 views
1

У меня есть следующие article.dtdПравильное использование внешнего DTD для 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> 

Я открываю файл XML с использованием браузера Google Chrome, и, когда я доступ к источнику страницы Я получаю только содержимое article.xml.

Не предполагается, что источник страницы должен объединить два файла (показать как определение типа документа, так и документ xml)? И если да, то почему это не происходит в моем примере? Если нет, как я должен проверить, написан ли мой xml в соответствии с файлом dtd, который я хочу?

Упоминание: article.dtd и article.xml находятся в этой же папке.

ответ

2

Не источник страницы, который должен объединить два файла (показать как определение типа документа, так и документ 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> 
     ^
+0

Спасибо, это Великий! –

 Смежные вопросы

  • Нет связанных вопросов^_^