文章目录
XML基本语法规则
XML 声明
可选择是否进行声明
XML 文档的第一行内容,通常是 XML 的声明部分,比如:
<?xml version="版本号" encoding="编码方式" standalone="独立与否"?>声明时的相对位置必须与示例相同即:version>>encoding>>standalone
若出现则必须是整XML 文档的第一行内容(第一行不能为注释或者空行)。<?xml 必须顶格,且中间不能有空格。
XML声明内容 | 是否可缺省 |
---|---|
版本声明(version) | 否 |
编码声明(encoding) | 是 |
文档独立性声明(standalone) | 是 |
版本声明(version 属性)
在 XML 的声明中,这个属性是必须的,并且必须作为第一个属性出现
若存在XML声明,则必须存在版本声明
编码声明(encoding 属性)
用于指明当前 XML 文档中所使用的符号的编码方式(指定解码方式)
这个编码方式与 XML 文档在文件系统中保存时使用的编码方式没有直接的关系
编码方式与解码方式是一一对应的
文档独立性声明 (standalone 属性)
表明当前 XML 文件是独立使用、还是与其他的标记文件配套使用
依赖于外部dtd、xslt等文件时,不独立,若是依赖于内部的则依旧独立
属性 | 解析时是否需要外部标记声明文档 |
---|---|
yes | 不需要 |
no | 需要 |
处理指令(Processing Instruction)
将 XML 文档用于特殊的应用程序时,表示需要执行的特定操作
XML 解析器并不理解这些处理指令的含义,也不会执行任何特定的操作
处理指令的语法格式如下:
<?target-name data?>比如: <?xml-stylesheet href="style.xsl" type="text/xsl”?>。
(1) 两个问号,是处理指令的开始与结束。
(2) 当 XSL 的执行引擎碰到这个处理指令时,将会根据 href 的取值获得指定的 xsl 文件,并对输入的 XML 文档进行相应的转换。
注释 (Comment)
语法:
注释中不应该出现两个连续的横线 (-)
注释不应该出现在元素的标记中
注释之中不应该嵌套注释
元素 (Element)
在层次结构的 XML 文档中,元素是最基本的组成单元
-
一个元素可以包含任意多个子元素,可以包含多个同名的子元素
-
子元素的顺序是非常重要的
比如再书的XML文档中,第一个 author 元素表示该书籍的第一作者,而第二个 author 元素表示第二作者,所以颠倒顺序后含义完全不同。
语法格式
<element_name att1=“val1” att2=“val2”> ――开始标记
…content… ――内容
</element_name> ――结束标记
元素中可以包含文本、子元素、或者两者的组合
命名规则
- 元素的名称必须以字母、或者下划线( _ )、或者冒号( : )开头
- 元素名称中除首个符号之外的部分可以是字母、数字、横线(-)、下划线(_)、点号(.)、冒号(:)的任意组合
- 元素名称是大小写敏感的,因此开始标记和结束标记中元素名称的大小写形式必须完全相同
- 元素名称长度没有限制
- 可以使用非英文的元素名
位置 | 字符 |
---|---|
开头 | 字母-下划线-冒号 |
除首字符外的其他位置 | 字母、数字、横线(-)、下划线(_)、点号(.)、冒号(:) |
不可以出现其他特殊字符,如&$%#@!等
空元素 (Empty Element)
在 XML 文档中,元素的内容可以为空
空元素是指不包含任何内容的元素,但是在其开始标记中可以包含属性
-
<element_name att1=“val1” att2=“val2”> </element_name>
-
<element_name> </element_name>
-
<element_name/>
2和3完全等价
属性 (Attribute)
-
元素在其开始标记中可以包含任意多个属性,但不能包含同名的属性
-
对于一个元素所有的属性,它们不分先后顺序,因为它们之间可以通过名称相互区别
属性不能独立于元素而存在(存在于元素的开始标记中),通常以名=值的形式出现,属性的取值必须加上引号(单引号或者双引号)。
属性的名-值对用于描述当前元素的某个方面的特征,比如:
< author firstname=“tom” lastname=“hanks” > < / author >
属性的命名规则与元素的命名规则相同
元素VS属性
元素内容中的子元素和属性,都可以用来刻画该元素某个方面的特征
对于简单的标量数据(无结构的数据),可以采用属性,否则应该采用子元素。
对于可能在数目上发生变化的特性,应该使用子元素,使用子元素的方案在可扩展性方面性能良好
比如某本书籍可能有多个作者:
子元素表示描述
< book >
< author >tom hanks< /author >
< author >mike jimmy< /author >
…
< /book >属性描述
< book author1=“tom hanks” author2=“mike jimmy”>…< /book>方法2修改了元数据的内容,即属性名称本身,可能会影响到已经编写的用于解析该文档的应用程序
同一元素其子元素与属性的对比
子元素 | 属性 | |
---|---|---|
数量 | 无限制 | 无限制 |
名称 | 可同名 | 不可同名 |
顺序 | 有序 | 无序 |
元素的内容
元素开始标记和结束标记之间的数据称为该元素的内容
内容形式
- 子元素
- 文本
- 子元素和文本的混合
XML解析器靠<>符号区分文本内容和元素
< > 之间的文本是元素的标记
文本内容
文本内容中不应该出现的特殊字符
特殊字符指的是在XML中有特殊含义的字符
使用特殊字符的方法
预定义实体
XML 1.0 规范中定义了五种预定义实体
字符 | 预定义实体(解析之后将被还原) |
---|---|
< | & lt;(less than) |
> | & gt;(great than) |
& | & amp; |
’ | & apos; |
" | & quot; |
注意&与字符之间无空格
除此以外的的其他实体,必须在使用前进行声明
CDATA段
CDATA段的作用:告诉解析器不要试图从该文本块中查找 XML 标记,它仅仅就是文本内容
假设 XML 文档的某块文本内容中包含大量的特殊字符,那么可以将整个文本块的内容放入到一个 CDATA 段
形如:
(<![CDATA[......]]>)
…表示文本块
CDATA 段的文本内容中不能直接出现 ]]>,并且 CDATA 段不应该嵌套使用
使用空白字符的方法(White Space)
空白字符:
-
空格
-
回车
-
换行
-
制表
在缺省的情况下,对于连续出现的空白字符,解析器会将其缩减为一个空格字符。
显示标记包含的全部空格的方法: 在编辑xml文件时将输入法换成“中文”输入法,并选择“全角状态”来编辑空格字符。