docBook.dtd与docbook.rng在DocBook 5.0发行版之间存在差异

时间:2013-07-31 14:16:46

标签: xml dtd relaxng docbook-5

当我验证我的文档时,使用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

>

1 个答案:

答案 0 :(得分:1)

DocBok 5.0 DTD只是一个近似值。针对DTD验证的文档不一定对规范的RELAX NG模式有效。

DocBook支持两种类型的表结构:CALS和HTML。 title上的informaltable属性仅在HTML表格中受支持。 RELAX NG模式可以区分这两种类型的表(具有相同的名称),但在DTD中,不能强制执行仅在HTML表中允许title的限制。

另见http://docbook.org/docs/howto/#introduction-schemas