XML
xml,全称extensiable markup language(可扩展标记语言)。是一种使用标签描述数据的语言,一个标签用于描述一段数据,一个标签可以分为开始标签和结束标签,在开始标签和结束标签之间,又可以使用其他标签来描述其他数据,一次来实现数据关系的描述。
一个xml文件包括以下几个部分:
XML文档声明 元素(或叫标记、节点) 属性 注释 CDATA节 处理指令(processing instruction)
文档声明
<?xml version ="1.0" encoding="utf-8" standalone='yes'?>
放在xml文件的第一行,由以下几部分组成:
- version-文档符合xml1.0规范,一般用不到1.1
- encoding-文档字符编码,比如"GB2312"或者"utf-8"
- standalone-文档定义是否独立使用,默认为“no”,yes代表独立使用,no代表xml不是独立的,该属性仅在使用DTD时相关。(当使用模式而不是 DTD时,属性是无关紧要的。)
元素(或叫标记、节点)
-
<元素名></元素名> 这就代表了一个元素
-
每个xml文件都有且只有一个根元素
- 它包括其他所有元素
- 根元素的起始标记在所有元素的起始标记之前
- 根元素的结束标记在所有元素之后
-
xml元素是指xml元素中出现的标签,一个标签分为开始标签和结束标签,有以下几种书写格式:
-
包含标签体:
<a>www.sohu.com</a>
-
不含标签体的:
<a></a>,简写为<a/>
-
一个标签中可以嵌套若干子标签,可以任意层数的嵌套,但是不能交叉嵌套
<a><b>这是正确的</b></a><a>这是<b>错误的</a></b>
-
对于xml标签中出现的所有空格和换行,xml解析程序会当作标签内容进行处理。例如下面两段内容的意义是不一样的:
<stu>xiaoming</stu>-
<stu> xiaoming </stu>
-
要特别注意空格和换行,他们都将被作为原始内容被处理
-
命名规范:一个xml元素可以包含字母、数字以及其他一些可见字符,但必须遵顼以下规范:
- 区分大小写,p和P是不一样的
- 不能以数字或者下划线“_”开头
- 元素内不能包含空格
- 名称中间不能包含冒号":"
- 可以使用中文,但是一般不这么用
-
属性
<元素名 属性名1="属性值1" 属性名2="属性值2">标签体</元素名>
- 属性值用单引号或者双引号分割,属性值中有单引号,则用双引号分割,属性值中有双引号,则用单引号分割,还有一些实体(转义字符)
- 特定的属性名称在同一个元素标记中只能出现一次(元素属性不能重复)
- 属性值不能包括<,>,&,,如果一定要包含,要使用实体
注释
<!--这是一个注释-->
- 注释内容不要出现
-- - 不要把注释放在元素中间
- 注释不能嵌套
- 可以在除元素以外的任何地方放注释
CDATA节
<![CDATA[
......
]]>
-
作用:为一些内容不相让解析引擎解析执行,而是当作原始内容处理,用于把整段内文本解释为纯字符数据而不是标记,就用CDATA节
-
CDATA节可以输入任何字符(]]>除外),但是不能嵌套
-
一个例子:他如果不包含在CDATA中就会报错
<stu id="001"> <name>杨过</name> <sex>男</sex> <age>20</age> <intro><![CDATA[ad<<&$^#*k]]></intro> </stu>正确写法:
<![CDATA[ <stu id="001"> <name>杨过</name> <sex>男</sex> <age>20</age> <intro><![CDATA[ad<<&$^#*k]]></intro> </stu> ]]>
处理指令(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>