XML知识点滴(3)
(引用文章,版权归作者,如需删除请联系我)
XML声明
XML声明部分 | 含义 |
<?xml | XML声明的起始标记。 |
Version=”1.0” | 版本声明。 |
Encoding=”gb2312” | 编码声明。如果忽略编码声明,XML处理器将尝试使用UTF-8、UTF-16等Unicode编码规则解析文档。 |
standalone=”yes” | 无依赖性声明。表示XML文档的内容不以来外部信息(如DTD)。此声明部分可以忽略,使用此声明,必须写在XML声明的最后。 |
?> | XML声明的结束标记。 |
n XML声明在文档中只能出现一次,且必须位于文档的第一行,前面不能有任何字符。
n 文件采用的编码方式要和XML的编码声明保持一致。
n XML文档总是以一个XML声明开始,其中指明所用XML版本、文档的编码、文档的独立性信息。其格式如下:
<?xml 版本信息 [编码信息] [文档独立性信息]?>
中括号([])中的的部分表示是可选信息。
n 版本声明<?xml version=”1.0”?>
n 文档编码声明
在XML声明中加上文档编码信息,默认是UTF-8,如果要使用中文,我们可以在声明 中加上encoding=”gb2312”,如下所示:
<?xml version=”1.0” encoding=”gb2312”?>
n 独立文档声明
如果我们的文档不依赖于外部文档,在XML声明中,我们可以通过standalone=”yes”来声明这个文档是独立的文档。如果文档以来于外部文档,可以通过standalone=”no” 来声明。完整的XML声明如下所示:
<?xml version=”1.0” encoding=”gb2312” standalone=”yes”?>
文档类型声明
n DTD(Document Type Definition)文档类型定义。
n XML从SGML继承了用于定义语法规则的DTD机制,但DTD本身并不要求遵循XML规则,几乎所有的XML应用都是使用DTD来定义的。HTML就有一个标准的DTD文件,所有其组织结构和所有的标签都是固定的。DTD文件也是一个文本文件,通常用”.dtd”作为其扩展名。
n 通过文档类型声明,指出XML文档所用的DTD。文档类型声明有两种形式,一种是声明DTD在一个外部的文件中,如下:
<!DOCTYPE greeting SYSTEM “hello.dtd”>
一种是直接在XML文档中给出DTD,如下:
<?xml version=”1.0” encoding=”gb2312” standalone=”yes”?>
<!DOCTYPE greeting[<!ELEMENT greeting(#PCDATA)>]>
元素
n 元素(Element)是每个XML文档中不可或缺的部分。每个XML文档至少要有一个元素。
n 在XML中,元素由开始标签(Start tag)、元素内容和结束标签(End tag)构成,对于空元素,由空元素标签构成。
n 在元素开始标签和结束标签之间的文本内容是元素的值。
n 如果一个元素的值为空字符串,也就是开始标签和结束标签之间没有内容,这种元素称为空元素(Empty element)。
n 结束标签和开始标签的大小写必须一致,因为XML是严格区分大小写的。
n 在元素标签左尖括号“<”后面必须紧跟元素名称,不能留有空白。结束标签名称前也不能留有空白。
n 每一个元素有一个用名字标识的类型,同时它可以有一个属性说明集,每一个属性说明有一个名字和一个值。
n 在给元素命名的时候要注意,以“xml”或其他任何匹配((‘X’|‘x’)(‘M‘|‘m’)(‘L’|‘l’))的字符串开头的名字,被保留用于XML规范的当前版本或后续版本的标准化。此外,在给元素命名时,还要遵循下列规范:
1) 名称只能以字符或下划线(_)开头。
2) 名称中可以包含字母、数字、下划线以及其他在XML标准中允许的字符。
3) 名称中不能包含空格。
4) 名称中尽可能不要使用冒号(:),因为冒号在名称空间中被用于分隔名称前缀和本地部分。
n “元素”和“标签”这两个词具有不同的含义。元素是指开始标签、结束标签以及两者之间的一切内容,包括属性、文本、注释、以及子元素。标签是一对尖括号(<>)和两者之间的内容,包括元素名和所有属性。例如:<font color=”blue”>是一个标签,</font>也是一个标签;而<font color=”blue”>Hello World</font>则是一个元素。
元素的四种形式
n 空元素
<student/>
n 带有属性的空元素
<student name=”张三” age=”18”/>
n 带有内容的元素
<student>
这是一个学生的信息
<name>张三</name>
<age>18</age>
</student>
n 带有内容和属性的元素
<student name=”张三”>
<age>18</age>
</student>
元素的内容构成
n 元素的内容可以包含子元素、字符数据、字符引用和实体引用、CDATA段。
n 当一个元素仅包含子元素,而没有文本内容时,称其有元素内容(Element content),如元素既包含子元素,又包含文本内容,则称其具有混合内容(Mixed content)。
根元素
n 不被其他元素包含的元素就是文档的根元素(Root element)。或称文档元素(Document element)。
n 一个文档必须有且只有一个根元素。
子元素
n 子元素本身也是元素,被嵌套在上层元素之内。子元素是相对于父元素而言的,如果子元素还嵌套了其他元素,那么它同时也是父元素。
<students>
<student>
<name>张三</name>
<age>18</age>
</student>
</students>
字符数据
n 在一个元素的内容中,字符数据可以是不包括任何标记的起始定界符和CDATA段的结束定界符的任意字符串,也就是说在元素内容中,字符数据不能有和号(&)和小于号(<),也不能有字符串“]]>”。
n 在CDATA段中,字符数据可以是不包括CDATA段的结束定界符的任意字符串。
n 判断下列元素内容是否合法
<data>&</data> 错
<data>/</data> 对
<data>/></data> 对
<data><</data> 错
<data>]]></data> 错