1.XML的简介
(1)Extendsible Makeup Lanuage可扩展标记性语言
标记型语言:都是使用标签进行操作的,HTML也是标记型语言
可扩展:在HTML中每一个标签都是固定的含义,但是XML中标签是自定义的,可以是中文。
(2)作用:Xml不是显示数据的,主要功能是存储数据的。
Xml是W3C组织发布的技术
Xml的版本有1.0 1.1 都用1.0的
2.xml的应用
(1)xml应用在不同的系统之间传输数据
(2)xml是生活中有关的数据
(3)xml经常用在系统的配置文件
操作数据库,知道数据库的地址,用户名 密码
但是如果数据库地址,用户名 密码 写到程序里面,通过程序读取信息,
3.Xml的使用
(1)文档声明(*****)
首先必须要有一个文档声明
<?xml version="1.0" encoding="gbk"?>
文档要写第一行,第一列
属性:
varsion: xml版本 一般用1.0
下面两个属性可以没有
encoding :xml的编码方式 gbk utf-8 iso8859-1(不支持中文)
standalone: xml文件是否依赖于其他文件 yes/no
例子:
<?xml version="1.0" encoding="gbk"?>
<person>
<name>zhangsan</name>
<age>12</age>
</person>
4.乱码问题的解决(*****)
设置xml的编码是utf-8,但是本地硬盘使用的是gbk,编码不一样
设置保存的时候是一样的
5.xml中的标签定义
(1)xml中定义的标签必须有开始标签,和结束标签
(2)xml可以嵌套,但是必须合理嵌套
(3)一个xml必须有且只有一个根标签
(4)在xml中会把空格和换行当成内容来解析所以
<a>AAA</a>
<a>
AAA
</a>
(5)书写规范
5.1xml区分大小写,<p><P>是不一样的
5.2不能以数字下划线开头<1a><_bb>这样写是不对
5.3不能以xml 或则 Xml XML开头
5.4标签里面不能有空格和冒号<a b> <b:a>
6.xml属性的定义
(1)在xml可以有多个属性,每个属性有自己的名称和值,不能有相同的属性
(2)属性名和属性值之间用“=”号,属性值可以用双引号和单引号
(3)属性的命名规范和元素是一样的
7.xml的注释(*****)
(1)<!-- -->
(2)xml的注释不可以嵌套
<!-- <!-- --> -->这是错误的
8.xml的特殊字符
(1)<:<
(2)>:>
9.xml的CDATA区
(1)写在CDATA区里面的内容,xml解析时候把里面的内容当成普通的文本
(2)写法<![CDATA[内容]]>
10.xml处理指令
(1)设置样式:
(2)对中文不起作用
11.xml的约束
(1)为什么需要约束
比如创建一个xml文档,这个文档 只能显示人的属性,要约束这个xml只能出现人的信息,所以就需要一个约束
(2)xml中约束:DTD约束schema约束
12.DTD的学习
引入方式有三种:
(1)外部的dtd文件
<!DOCTYOPE 根元素名称 SYSTEM "dtd路径">
(2)使用内部的DTD约束
<!DCTYPE 根元素的名称[
<!ELEMENT 名称 (#PCDATA)>
<!ELEMENT 名称 (子标签1,子标签2)>
]>
(3)使用公共的DTD
在网络上有一些dtd的约束
<!DOCTYPE 根元素 PUBLIC "DTD名称" "DTD路径">
13.使用DTD约束xml的元素
书写格式<!ELEMENT 写标签名称 标签的约束>
标签的约束
(1)如果是简单的元素
(#PACDATA):元素是一个字符串类型 (EMPTY):元素为空 (ANY):任意类型
(2)如果是复杂元素
(元素1,元素2,元素3):元素出现要按这个顺序
(元素1 | 元素2 | 元素3);表示元素只能在这个范围内出现其中的一个
(元素1+,元素2?,元素3*):“+”:出现至少一次或多次 “?”:0次或则1次 “*”:任意
14.DTD约束xml中的属性
(1)语法
<!ATTLIST 元素名称
属性名称 属性类型 属性约束
>
属性类型:(1)CDATA:表示字符串 (2)ID:必须是字母或则下划线开头(3) 枚举:在一定范围内只能出现指定范围的一个(AA | BB)
属性约束:(1)#REQUIRED :属性必须有 (2)#IMPLIED:可有可无 (3)#FIXED:固定值(属性必须是固定值)(4)直接指:属性上不写,就是这个值
<!ATTLIST
id1 CDATA #REQUIRED
id2 CDATA #FIXED "ABC"<pre class="html" name="code"> id3 ID REQUIRE
>
15.DTD的实体使用
(1)语法
<!ENTITY 实体名称 "实体的值 ">
(2)使用实体 &实体名称
使用实体,使用dtd引入方式需要使用内部dtd的方式
如果使用高版本的浏览器,使用外部引入dtd不能使用实体
如果使用低版本的浏览器,ie6,可以外部引入dtd可以使用dtd
<!ENTITY TEST "HAHAHA">
<name>&TEST</name>
17.xml的约束Schema
与DTD的比较
(1)dtd自称一派语法<!ELEMENT >,Schema遵循xml的语法
(2)在一个xml只能使用一个dtd约束,但是可以使用多个schema
(3)不同的schema使用名称空间(类似java里面的包名)
(4)dtd没有schema支持的数据类型多(比如标签age,在dtd的约束是(#PCDATA),在schema里面的约束是int double)
(5)语法复杂
Schema入门案例
(1)创建schema约束文件。后缀名:.xsd
schema就是一个xml文件
根节点是schema
(2)创建约束文件
elementFormDefault="qualified":是否遵循语法 质量良好
(3)数xml中有多少个元素,写多少个element
(4)判断复杂还是简单元素
复杂元素:
<element name="person">
<complexType>
<sequence>
</sequence>
</complexType>
</element>
简单元素:
<element name="name" type="string"></element>
指示器
(1)A
ll:只能出现一次
(2)Choice:只能出现其中一个
(3)sequence:按顺序出现
(4)在元素上写maxOccurs="unbounded":表示可以出现多次
(5)属性约束:只能在复杂元素上写<attribute name="p1" type="string" use="required"></attribute>
复杂的schema