XML 语法

标记

XML 使用 < > 来定义标记

所有的 XML 标记必须结束。<para>必须有一个与之配对的</para>;或者使用空标记,例如<para/>

XML 标记大小写敏感。<para><PARA>是两个不同的标记;在 Docbook 中,所有的标记都是小写的

标记必须正确的嵌套,不允许相互嵌套

  1. <section><para></section></para> 错误
  2. <section><para></para></section> 正确

元素

XML 使用开始标记和结束标记来定义元素。例如<para>段落</para>;或者使用空标记,例如<xref linkend="ln"/>

元素可以带有一个或多个属性,也可以不带属性。属性值必须加引号,例如<para id="p1">

处理指令

使用<? ?>括起来,例如:<?linebreak?>插入一个断行符参见

文件头部

  1. <?xml version='1.0' encoding="UTF-8"?>
  2. <!DOCTYPE article
  3. PUBLIC "-//OASIS//DTD DocBook XML V4.5/zh_cn" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">

1

处理指令

2

XML 的版本是1.0

3

文档的编码是 UTF-8

4

开始声明 DTD(文档类型定义)

5

声明文档的根元素是 article

6

公共标识

7

系统标识

实体

给内容指定一个名称,通过名称引用。引用时以&起始,;结束。

这样定义一个实体

  1. <!ENTITY x "XML">

输入&x;,XML 会用 XML 替换它

以上是内部实体,可以通过定义外部实体来引用外部文档

  1. <!ENTITY docbook SYSTEM "docbook.xml">

输入&docbook;,会将docbook.xml文件中的内容插入到当前位置

内部实体和外部实体都是普通实体,只能够在 DTD 中定义

  1. <?xml version='1.0' encoding="UTF-8"?>
  2. <!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.5/zh_cn"
  3. "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd"
  4. [
  5. <!ENTITY x "XML">
  6. <!ENTITY docbook SYSTEM "docbook.xml">
  7. ]>

1

这里声明 DTD 的方法是引用外部 DTD

2

自己定义的实体为内部 DTD
  • 内部 DTD 的定义优先于外部 DTD,如果你定义的实体外部 DTD 中已包含,引用时使用的是你自己的定义

有一些特殊字符不能直接插入 XML 中,例如<&空格字符[50],使用&lt;&amp;&nbsp;[51]输入这些字符


[50] 不管有多个空格,XML 都认为只有一个

[51] 它们预先定义在外部 DTD 中
参见/usr/share/xml/docbook/xml-dtd-4.5/ent/isonum.ent