元素章节:有效性错误:元素章节内容不遵循DTD,期待

时间:2014-05-06 12:12:32

标签: xml dtd xml-dtd xmllint

我有openembedded有一个docs目录,README指示我运行

make <type>

类型可以是pdf,dvi,html,txt等等

xsltprocdocbook-utils是生成文档所必需的。 两者都已安装。

你有make pdf,产生的错误是:

./usermanual.xml:91: element chapter: validity error : Element chapter content
 does not follow the DTD, expecting (beginpage? , chapterinfo? , (title , 
subtitle? , titleabbrev?) , (toc ...
title CDATA CDATA CDATA CDATA CDATA CDATA CDATA CDATA CDATA CDATA CDATA CDATA 
CDATA CDATA CDATA ) 
Document ./usermanual.xml does not validate
make: *** [lint] Error 3

我绝对0 - 使用XML个文件,dtd个文件。而且我怀疑我的版本docbook-utils发生了冲突,而且来源需要。

1 个答案:

答案 0 :(得分:1)

错误消息被截断,因此无法确切知道<chapter>元素的要求是什么,但它表示<chapter>元素的内容不匹配DTD因此不会验证。它详细说明了<chapter>元素按特定顺序需要某些元素的问题。

错误消息中的逗号表示序列。从上面显示的错误消息部分可以知道,<chapter>元素内部:

  • 您可以拥有零个或一个 <beginpage>元素,如果存在,则必须先出现。
  • 您可以拥有零个或一个 <chapterinfo>元素,如果存在,则必须先于其他元素,但必须在<beginpage>之后(如果存在)。
  • 关注<beginpage><chapterinfo>,您必须拥有<title> 最多只能有<subtitle> <titleabbrev> }或<!ELEMENT name (title?, first, middle*, last)>

如果源XML中没有遵循上述任何规则,验证将失败。

消息的其余DTD描述似乎是缩写的,因此不可能得出任何结论。您应该检查完整的DTD以了解错误。阅读DTD并不困难。大多数情况下你只需要理解以逗号分隔的名称​​序列nametitle允许零或一个first,必须有一个{{1 }},可能为零或无界middle,且必须按此顺序排列last选项|分隔:{{1} (<!ELEMENT contact (email | phone)>必须包含contactemail)或phone<!ELEMENT contact (email | phone)*>可以为空,可以包含多个contact或{的选项{1}},按任意顺序)。

您可能想要快速阅读DTD tutorial