当我验证我的文档时,使用RelaxNG和DocBook 5.0解决方案中提供的docbook.rng架构,我发现了如下错误:
错误:此时不允许属性“title”;忽略
并且违规的XML元素是“非正式的”。事实上,我在O'Reilly网站上读到,非正式表的基本定义是没有标题的表。但是,在同一发行版上提供的docbook.dtd DTD将“title”指定为信息表中的属性。这是DTD中的错误吗?
DTD片段,此处包含,供参考。如果这个dtd确实不正确,在某个地方是否有正确的,或者我能以某种方式生成它吗?
<!ELEMENT informaltable (info?, ((textobject*, (mediaobject+|tgroup+))|((col*|colgroup*), thead?, tfoot?, (tbody+|tr+))))>
<!ATTLIST informaltable
xmlns CDATA #FIXED "http://docbook.org/ns/docbook"
role CDATA #IMPLIED
%db.common.attributes;
%db.common.linking.attributes;
tabstyle CDATA #IMPLIED
floatstyle CDATA #IMPLIED
orient (land|port) #IMPLIED
colsep (0|1) #IMPLIED
rowsep (0|1) #IMPLIED
frame (all|bottom|none|sides|top|topbot|void|above|below|hsides|lhs|rhs|vsides|box|border) #IMPLIED
pgwide (0|1) #IMPLIED
rowheader (firstcol|norowheader) #IMPLIED
class CDATA #IMPLIED
style CDATA #IMPLIED
title CDATA #IMPLIED
lang CDATA #IMPLIED
onclick CDATA #IMPLIED
ondblclick CDATA #IMPLIED
onmousedown CDATA #IMPLIED
onmouseup CDATA #IMPLIED
onmouseover CDATA #IMPLIED
onmousemove CDATA #IMPLIED
onmouseout CDATA #IMPLIED
onkeypress CDATA #IMPLIED
onkeydown CDATA #IMPLIED
onkeyup CDATA #IMPLIED
summary CDATA #IMPLIED
width CDATA #IMPLIED
border NMTOKEN #IMPLIED
rules (none|groups|rows|cols|all) #IMPLIED
cellspacing CDATA #IMPLIED
cellpadding CDATA #IMPLIED
>
答案 0 :(得分:1)
DocBok 5.0 DTD只是一个近似值。针对DTD验证的文档不一定对规范的RELAX NG模式有效。
DocBook支持两种类型的表结构:CALS和HTML。 title
上的informaltable
属性仅在HTML表格中受支持。 RELAX NG模式可以区分这两种类型的表(具有相同的名称),但在DTD中,不能强制执行仅在HTML表中允许title
的限制。