Я пытаюсь выяснить, правильно ли я объявляю свои элементы DTD в документе xml. Из всего, что я могу сказать, ни xsltpro c, ни xmllint не обнаруживают ошибки достоверности в следующем документе:
<!DOCTYPE basic-dtd [
<!ENTITY title "The Book of Love">
<!ENTITY author "Jeffrey Halcomb">
<!ELEMENT basic-dtd (title,author,subject,checked-out)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT author (#PCDATA)>
<!ELEMENT checked-out EMPTY>
]>
<basic-dtd>
<author>&author;</author>
<title>&title;</title>
<subject>A treatise on love as a driving elemental force in nature</subject>
<checked-out>Yes</checked-out>
</basic-dtd>
В моей инструкции doctype я (как мне кажется) указал:
- правильный порядок элементов в элементе basi c -dtd: заголовок, автор, тема и извлечение.
- элемент 'извлечен' не должен содержать никаких данных (PCDATA, CDATA, или дочерние элементы)
И все же, когда я запускаю следующую таблицу стилей для этого xml (xsltpro c basi c -dtd.xsl basi c -dtd. xml), он не сообщает об ошибках / предупреждениях.
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
<xsl:output omit-xml-declaration="no" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/basic-dtd">
<xsl:copy-of select="."/>
</xsl:template>
</xsl:stylesheet>
Аналогично, когда я запускаю xmllint (xmllint --noent basi c -dtd. xml) - он не сообщает об ошибках.
xsltpro c и xmllint (с --noent) обрабатывают сущности и выдают ошибку, если используется неизвестная сущность.
Использую ли я apple-процессор для преобразования / печати оранжевого - xml (неправильный инструмент для работы), или это известная функция?
Спасибо,
Том