【发布时间】:2022-11-09 02:16:29
【问题描述】:
我的 book.xml 文件中有以下 DocBook 结构:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd"
[ <!-- -->
<!ENTITY bookinfo SYSTEM "bookinfo.sgm">
<!ENTITY abstract SYSTEM "abstract.sgm">
<!ENTITY chap1 SYSTEM "chap1.sgm">
<!ENTITY biblio SYSTEM "biblio.sgm">
<!ENTITY the_author "Author Name">
] >
<book>
<title>Book title</title>
&bookinfo;
<abstract>
<para>Abstract.</para>
</abstract>
&chap1;
&biblio;
</book>
当我从 cmd 运行 xmllint -valid book.xml 时,我收到此错误:
book.xml:18: 元素书:有效性错误:元素书内容不遵循 DTD,期望 ((title , subtitle? , titleabbrev?)? , bookinfo? , (dedicate | toc | lot | 词汇表 | 参考书目 | 前言 |章 | 参考 | 部分 | 文章 | 附录 | 索引 | setindex | colophon)*), got (title CDATA abstract CDATA CDATA )
为什么 xmllint 给我它?似乎一切正常...
请帮我纠正这个错误。
【问题讨论】:
-
很难重现,因为我们不知道
&bookinfo中的内容,即bookinfo.sgm,但很可能是它打开和关闭了<bookinfo>块。可能<abstract>现在位于无效位置(应该是信息类型的块,也可以:tdg.docbook.org/tdg/5.0/abstract.html