如何判断我的docbook文件是否有效?
How to determine whether my docbook file is valid?
我有一个 docbook 文件 me.xml
。我尝试将其转换为 pdf 时总是出现错误,我不确定是转换器问题还是我的文件问题。
有没有一种快速、故障安全的方法可以测试我的文件是否是格式正确的文档?
首先你需要知道它是 Docbook 5.x 还是 DocBook 4.5。
Docbook 4.5 示例 header:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
<article>
<articleinfo>
<title/>
<author>
<firstname/>
<surname/>
<affiliation>
<orgname/>
</affiliation>
</author>
<pubdate/>
</articleinfo>
<section>
<title/>
<para/>
</section>
</article>
DocBook 5.1 示例 header:
<?xml version="1.0" encoding="UTF-8"?>
<chapter version="5.1"
xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xila="http://www.w3.org/2001/XInclude/local-attributes"
xmlns:xi="http://www.w3.org/2001/XInclude"
xmlns:trans="http://docbook.org/ns/transclusion"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:m="http://www.w3.org/1998/Math/MathML"
xmlns:html="http://www.w3.org/1999/xhtml"
xmlns:db="http://docbook.org/ns/docbook">
<info>
<title>Introduction</title>
</info>
<section>
<info>
<title>Chapter title</title>
</info>
<para>
You can see an example:
</para>
<example>
<title>main example</title>
<programlisting language="c">
</programlisting>
</example>
</section>
</chapter>
如何验证:
如果您使用编辑器 create/edit 您的 DocBook 文件(如 XMLMind XML Editor or Oxygen Author)- 编辑器完全有责任进行验证并告诉您是否有错误在您的 DocBook 文档中。此外,编辑器不允许您插入错误的元素。
如果您只是在任何文本编辑器中创建 xml
文件 and/or - 您需要工具在命令行中根据模式验证它。
对于 DocBook 4.5,您可以使用 xmllint
验证 DocBook DTD
对于 DocBook 5.x 您可以针对使用其他一些工具进行验证。参见 https://tdg.docbook.org/tdg/5.0/ch03.html
注意 1:如果您正在使用 DocBook 5.x 并尝试针对 RelaxNG 和 Schematron 模式进行验证,请考虑以下信息:https://superuser.com/questions/741957/validating-docbook-5-documents-against-both-relaxng-and-schematron
注意 2:不要忘记 xml
文件有两种形式的正确性:well-formedness(针对 XML 的正确性规范)和有效性(针对特定 XML 词汇进行校正)。
我有一个 docbook 文件 me.xml
。我尝试将其转换为 pdf 时总是出现错误,我不确定是转换器问题还是我的文件问题。
有没有一种快速、故障安全的方法可以测试我的文件是否是格式正确的文档?
首先你需要知道它是 Docbook 5.x 还是 DocBook 4.5。
Docbook 4.5 示例 header:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
<article>
<articleinfo>
<title/>
<author>
<firstname/>
<surname/>
<affiliation>
<orgname/>
</affiliation>
</author>
<pubdate/>
</articleinfo>
<section>
<title/>
<para/>
</section>
</article>
DocBook 5.1 示例 header:
<?xml version="1.0" encoding="UTF-8"?>
<chapter version="5.1"
xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xila="http://www.w3.org/2001/XInclude/local-attributes"
xmlns:xi="http://www.w3.org/2001/XInclude"
xmlns:trans="http://docbook.org/ns/transclusion"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:m="http://www.w3.org/1998/Math/MathML"
xmlns:html="http://www.w3.org/1999/xhtml"
xmlns:db="http://docbook.org/ns/docbook">
<info>
<title>Introduction</title>
</info>
<section>
<info>
<title>Chapter title</title>
</info>
<para>
You can see an example:
</para>
<example>
<title>main example</title>
<programlisting language="c">
</programlisting>
</example>
</section>
</chapter>
如何验证:
如果您使用编辑器 create/edit 您的 DocBook 文件(如 XMLMind XML Editor or Oxygen Author)- 编辑器完全有责任进行验证并告诉您是否有错误在您的 DocBook 文档中。此外,编辑器不允许您插入错误的元素。
如果您只是在任何文本编辑器中创建
xml
文件 and/or - 您需要工具在命令行中根据模式验证它。对于 DocBook 4.5,您可以使用
xmllint
验证 DocBook DTD
对于 DocBook 5.x 您可以针对使用其他一些工具进行验证。参见 https://tdg.docbook.org/tdg/5.0/ch03.html
注意 1:如果您正在使用 DocBook 5.x 并尝试针对 RelaxNG 和 Schematron 模式进行验证,请考虑以下信息:https://superuser.com/questions/741957/validating-docbook-5-documents-against-both-relaxng-and-schematron
注意 2:不要忘记 xml
文件有两种形式的正确性:well-formedness(针对 XML 的正确性规范)和有效性(针对特定 XML 词汇进行校正)。