XML语法
一个XML文档包含以下内容
- 文档声明
- 元素
- 属性
- 注释
- CDATA区、特殊字符
- 处理指令
一、文档声明
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
二、元素(标记、节点)
2.1根元素
- 根元素是一个包括文档中其他所有元素的元素
- 每个文档必须有且只有一个根元素
- 根元素的起始标记要翻噶子所有其他元素的起始标记之前
- 根元素的结束标记要放在所有其他元素的标记之后
2.2元素
XML元素指的是XML文件中出现的标签,一个标签分为开始标签和结束标签,一个标签有如下几种书写方式
- 包含标签体:
<a>www.sohu.com</a>
- 不包含标签体:
<a></a>,简写为:<a/>
2.3标签嵌套子标签
一个标签中可以嵌套若干子标签。但所有标签必须合理地嵌套,不允许交叉嵌套,如:
<a>welcome to <b> www.sohu.com </a></b>(这种情况一定会报错)
2.4空格和换行敏感
对于XML标签中出现的所有空格和换行,XML解析程序都会当做标签内容进行处理。例如下面两段内容的意义是不一样的。
<stu>xiaoming</stu>
<stu>
xiaoming
</stu>
2.5命名规范
一个XML元素可以包含字母、数字以及其它一些可见字符,但必须遵守以下规范:
- 区分大小写
- 不能以下划线开头
- 元素内不能包含空格
- 名称中间不能包含冒号
- 可以使用中文,但一般不使用中文
三、属性
<student id="100">
<name>Tom</name>
</student>
3.1属性分隔
属性值用双引号(”)或单引号(’)分隔,如果属性值中有单引号,则用双引号分隔;如果有双引号,则用单引号分隔。那么如果属性值中既有单引号还有双引号怎么办?这种要使用实体(转义字符,类似于html中的空格符),XML有5个预定义的实体字符,如下:
3.2多个属性
一个元素可以有多个属性,它的基本格式为:
<元素名 属性名1="属性值1" 属性名2="属性值2">
四、注释
XML的注释类似于HTML中的注释
<!--这是一个注释-->
- 注释内容中间不要出现–
- 不要把注释放在标记中间
- 注释不能嵌套
- 可以在除标记以外的任何地方放注释
五、CDATA节、特殊字符
假如有这么一个需求,需要通过XML文件传递一幅图片,怎么做呢?其实我们看到的电脑上的所有文件,本质上都是字符串,不过它们都是特殊的二进制字符串。我们可以通过XML文件将一幅图片的二进制字符串传递过去,然后再解析成一幅图片。那么这个字符串就会包含大量的<,>,&或者“等一些特殊的不合法的字符。这时候解析引擎是会报错的。
所以,有些内容可能不想让解析引擎解析执行,而是当做原始内容处理,用于把整段文本解释为纯字符数据而不是标记。这就要用到CDATA节。
语法如下:
<![CDATA[
......
]]>
CDATA节中可以输入任意字符(除]]>
外),但是不能嵌套!
六、处理指令
处理指令,简称PI(processing instruction)。处理指令用来指示解析引擎如何解析XML文件,看下面一个例子:
比如我们也可以使用css样式表来修饰XML文件,编写my.css如下:
name{
font-size:80px;
font-weight:bold;
color:red;
}
sex{
font-size:60px;
font-weight:bold;
color:blue;
}
sex{
font-size:40px;
font-weight:bold;
color:green;
}
我们在XML文件中使用处理指令引入这个css文件,如下:
<?xml version="1.0" encoding="gb2312"?>
<?xml-stylesheet href="my.css" type="text/css"?>
<class>
<stu id="001">
<name>杨过</name>
<sex>男</sex>
<age>20</age>
</stu>
<stu id="002">
<name>小龙女</name>
<sex>女</sex>
<age>21</age>
</stu>
</class>