1 XML 的声明
这是一个XML处理指令。处理指令以 <? 开始,以 ?> 结束。<? 后的第一个单词是指令名,如xml, 代表XML声明。
version, standalone, encoding 是三个特性,特性是由等号分开的名称-数值对,等号左边是特性名称,等号右边是特性的值,用引号引起来。
几点解释:
- version: 说明这个文档符合1.0规范
- standalone: 说明文档在这一个文件里还是需要从外部导入, standalone 的值设为yes 说明所有的文档都在这一文件里完成
- encoding: 指文档字符编码
2 XML 根元素定义
XML文档的树形结构要求必须有一个根元素。根元素的起始标记要放在所有其它元素起始标记之前,根元素的结束标记根放在其它所有元素的结束标记之后,如
<Settings>
<Person>Zhang San</Person>
</Settings>
3 XML元素
元素的基本结构由 开始标记,数据内容,结束标记组成,如
<Name>Zhang San</Name>
<Sex>Male</Sex>
</Person>
需要注意的是:
- 元素标记区分大小写,<Name> 与 <name>是两个不同的标记
- 结束标记必须有反斜杠,如 </Name>
XML元素标记命名规则如下:
- 名字中可以包含字母,数字及其它字母
- 名字不能以数字或下划线开头
- 名字不能用xml开头
- 名字中不能包含空格和冒号
4 XML中的注释
XML中注释如下:
需要注意的是:
- 注释中不要出现“--”或“-”
- 注释不要放在标记中
- 注释不能嵌套
5 PI (Processing Instruction)
PI 指 Processing Instruction, 处理指令。PI以“<?”开头,以“?>”结束,用来给下游的文档传递信息。
例子表明这个XML文档用core.css控制显示。
6 PCDATA
#PCDATA: specifies that an element will contain parsed character data.
举例说明PCDATA的用法, 其中movies.xml 存储电影内容数据,movies.dtd对movies.xml进行验证。
示例文件(movies.dtd)
<!ELEMENT movies (id, name, brief, time)>
<!ATTLIST movies type CDATA #REQUIRED>
<!ELEMENT id (#PCDATA)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT brief (#PCDATA)>
<!ELEMENT time (#PCDATA)>
id, name, brief, time只能包含非标记文本(不能有自己的子元素)。
XML文件如下所示(movies.xml):
<!DOCTYPE movies SYSTEM "movies.dtd">
<movies type="动作片">
<id>1</id>
<name>致命摇篮</name>
<brief>李连杰最新力作</brief>
<time>2003</time>
</movies>
7 CDATA
CDATA用于需要把整段文本解释成纯字符数据而不是标记的情况。当一些文本中包含很多“<”,“>”,“&”,“””等字符而非标记时,CDATA会非常有用。
<![CDATA[
<Person>
<Name>ZhangSan</Name>
<Sex>Male</Sex>
</Person>
]]>
</Example>
以“<![CDATA[” 开始,以“]]>”结束。注意,在CDATA段中不要出现结束定界符“]]>”。
8 Entities(实体)
Entities(实体)是XML的存储单元,一个实体可以是字符串,文件,数据库记录等。实体的用处主要是为了避免在文档中重复输入,我们可以为一个文档定义一个实体名,然后在文档里引用实体名来代替这个文档,XML解析文档时,实体名会被替换成相应的文档。
XML为五个字符定义了实体名:
实体 |
字符 |
< |
< |
> |
> |
& |
& |
" |
“ |
' |
‘ |
定义并引用实体的示例:
<!ENTITY intro "Here is some comment for entity of XML">
]>
<example>
<hello>&intro;</hello>
</example>
9 DOCTYPE
“<!DOCTYPE[]>”紧随XML声明,包括所有实体的声明,如下所示:
declare your entities here…
]>
<example>
Body of document…
</example>