一、XML简介
XML是一种可扩展的标记语言,被设计用来传输和存储数据、传输数据。
需要自定义标签,自我描述性,XML是W3C的推荐标准;
二、XML的特点与作用
1)特点
- xml与操作系统、编程语言的开发平台无关
- 实现不同系统之间的数据交互
2)作用
- 配置应用程序
- 数据交互Ajax
三、XML格式
一个xml文档必须要有第一行的声明和它的文档元素的描述信息
1)xml声明:一般是xml文档的第一行
- <?xml version="1.0" encoding="字符集编码集" standalone="[ yes | no ]"?>
- version定义版本号1.0,encoding定义编码格式,standalone定义独立声明
2)根元素
- 它是xml文档里面唯一的;它的开始是在最前面,结束是放在最后面
3)元素
- 所有的xml元素都必须有一个关闭标签,<p></p><br />
- xml标签对大小写敏感
- xml必须正确地嵌套
- 元素命名:可以包含字母,数字,或其它的字符;不能以数字或者标点符号开始;不能包含空格;
- 空元素
4)属性:属性值用双引号包裹;一个元素可以有多个属性
- 语法:<元素名 属性名=“属性值” 属性名=“属性值”></元素名>;
- <Student ID=“S100”><Name>Tom</Name></Student>
5)实体:实体引用来代替产生错误的字符
- 在xml中,一些字符拥有特殊的意义。如果把字符“<”放在xml元素中,会发生错误,解析器会把它当作新元素的开始
< | < | 小于 | less than |
> | > | 大于 | greater than |
& | & | 与 | ampersand |
' | ' | 单引号 | apostrophe |
" | " | 双引号 | quotation |
6)注释:注释内容中不要出现”--”;不要把注释放在标签中间;注释不能嵌套。
7)命名空间(xml Namespaces):命名空间是在元素的开始标签的 xmlns 属性中定义的。
- 命名空间提供避免元素名冲突的方法
- 在xml中,元素名是开发者定义的,当两个不同的文档使用相同的元素名,就会发生冲突
- 为标签添加了一个xmlns属性,这样就以前缀赋予了一个与某命名空间相关联的限定名称
- 语法:xmlns:前缀="URL" ;
- 默认命名空间:xmlns="namespaceURL";为元素定义默认的命名空间可以让我们省去在所有的子元素中使用前缀的工作
四、XML验证(约束)
DTD 与 Schema 建议使用Schema因为功能强大
1)DTD:文档类型定义 Document Type Definition
DTD用来描述xml文档的结构,一个DTD文档包含:
① 元素的定义规则;② 元素之间的关系规则;③ 属性的定义规则;
2)关联方式:使用内部DTD、使用外部DTD、使用公共DTD)
3)内部关联:将约束文档书写在XML内部
<!DOCTYPE 根元素 [...具体规范内容...] >
1 <?xml version="1.0" ?> 2 <!DOCTYPE note [ 3 <!ELEMENT note (to,from,heading,body)> 4 <!ELEMENT to (#PCDATA)> 5 <!ELEMENT from (#PCDATA)> 6 <!ELEMENT heading (#PCDATA)> 7 <!ELEMENT body (#PCDATA)> 8 ]> 9 <note> 10 <to>Tove</to> 11 <from>Jani</from> 12 <heading>Reminder</heading> 13 <message>Don't forget me this weekend!</message> 14 </note>
4)外部关联模式:<!DOCTYPE 文档根节点 SYSTEM "DTD文件的URL">
<DOCTYPE note SYSTEM "book.dtd">
5)公共关联模式:<!DOCTYPE 文档根节点 PUBLIC "DTD名称" "DTD文件的URL">
<!-- 引用的文件是一个网络上的公共文件--> <!DOCTYPE note PUBLIC "-//Sun Microsystems,inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
6)Schema:W3C 支持一种基于 XML 的 DTD 代替者,它名为 XML Schema
xml Schema是用一套预先规定的xml元素和属性创建的,这些元素和属性定义了xml文档的结构和内容模式。Xml Shema规定xml文档实例的结构和每个元素/属性的数据类型。
shema类似表结构,在表结构里,定义一些数据的限制要求。然后我们xml文档呢就相当于是数据表将来要存储的数据,也就是数据库里面的数据表数据了,所以整体来讲的话schema它就是用于验证xml文档的。
1 <?xml version="1.0"?> 2 <!-- xsd约束--> 3 <xs:schema 4 xmlns:xs="http://www.w3.or/2001/XMLSchema" 5 targetNamespace="http://www.w3cschool.com.cn" 6 xmlns="http://www.w3cschool.com.cn" 7 elementFormDefault="qualified" 8 > 9 <xs:element name="note"> 10 <xs:complexType> 11 <xs:sequence> 12 <xs:element name="to" type="xs:string"/> 13 <xs:element name="from" type="xs:string"/> 14 <xs:element name="heading" type="xs:string"/> 15 <xs:element name="body" type="xs:string"/> 16 </xs:sequence> 17 </xs:complexType> 18 </xs:element> 19 </xs:schema>
1 <?xml version="1.0" encoding="UTF-8"> 2 <note 3 xmlns="http://www.w3cschool.com.cn" 4 xmlns:w3="http://www.w3school.com.cn" 5 xmlns:se="http://www.sikiedu.com" 6 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 7 xsi:schemaLocation="http://www.w3school.com.cn note.xsd" 8 http://www.sikiedu.com http://www.sikiedu.com/xx/xx/xx.xsd 9 > 10 <!-- note.xsd为本地路径xsd文件,http://www.sikiedu.com/xx/xx/xx.xsd为网络上的xsd路径--> 11 <to></to> 12 <w3:from></from> 13 <heading></heading> 14 <body></body> 15 </note>