XML 语法

标记

XML 使用 < > 来定义标记

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

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

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

<section><para></section></para>  错误

<section><para></para></section>  正确  

元素

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

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

处理指令

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

文件头部

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

1

处理指令

2

XML 的版本是1.0

3

文档的编码是 UTF-8

4

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

5

声明文档的根元素是 article

6

公共标识

7

系统标识

实体

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

这样定义一个实体

<!ENTITY x "XML">    

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

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

<!ENTITY docbook SYSTEM "docbook.xml">    

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

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

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

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