xml
1、简介:可扩展标记型语言
标记型语言:html也是,也是使用标签来操作
可扩展
- html里面的标签是固定的,每个标签都有特定的含义
- xml标签可以自己定义 可以写中文的标签
2、xml用途
html为了显示数据,xml也可以显示数据,但是最重要的是存储数据。
xml我w3c组织发布的技术。有2个版本:1.0和1.1 都使用1.0版本,1.1不能向下兼容。
3、xml的运用
-不同的系统之间传输数据 (比如QQ文件的传输)
-用来表示生活中有关系的数据 (比如国家下面的城市)
-经常用在文件配置
4、xml的语法
(1)xml的文档声明
-创建一个文件,后缀名是.xml
-如果写xml,第一步必须有一个文档声明(写了文档声明后,表示写xml文件的内容)
格式: <?xml version=”1.0” encoding=”gbk/utf-8”?> 注意空格,一定要有 文档声明必须写在第一行第一列
属性
-version:xml的版本1.0
-encoding:xml编码 gbk、utf-8、iso8859-1(不包含中文)
-standalone:是否需要依赖其他文件 yes/no 比较少用到
xml的中文乱码问题解决
设置保存时候的编码方式和打开时候的编码方式一致
(2)定义元素(标签)
和html的标签一样
在xml中会把空格和换行都当成内容来解析
命名规则
1、xml代码区分大小写
2、不能以数字或者下划线_开头
3、不能以xml开头(大小写都不可以)
4、不能包含空格和冒号:
(3)定义属性
命名规则与标签的命名规则是相同的
(4)注释
写法: <!—xml的注释-->
注释不能嵌套,也不能放到第一行第一列, 那个位置是放文档声明的位置
(5)特殊字符
<:< >:> 前面2个比较常用 ”:" ’:apos; &:&
(6)CDATA区 了解
可以解决多个特殊字符都需要转义的操作,就是把这些内容放在CDATA区里面,就不需要转义了
写法:<![CDATA[ 内容 ]]> 空格不用管
(7)PI指令(处理指令) 很少用
可以在xml中设置样式
写法:<?xml-stylesheet type=“text/css” href=“css的路径”?>
设置样式,只能对英文标签名称起作用,对于中文标签名称不起作用
5、xml的约束
因为要符合常理,比如人有名字和年龄这些属性,但是不能有猫狗这些属性,所以需要进行约束
xml的约束的技术:dtd约束和schema约束
6、dtd约束的快速入门
步骤(1)、创建一个文件 后缀名是.dtd
(2)、看xml中有多少个元素,有几个元素,就写几个<!ELEMENT>
(3)、判断元素是简单元素还是复杂元素
-简单元素:没有子元素 <!ELEMENT 元素 (#PCDATA)>
-复杂元素:有子元素 <!ELEMENT 复杂元素 (子元素,子元素..)> 没有孙子辈的元素,只有儿子的元素
(4)、需要在xml文件中引入dtd文件
<!DOCTYPE 根元素名称 SYSTEM “dtd文件路径”>
myeclipse工具进行检验
ctrl+shift+/ 注释的快捷键
7、dtd的三种引入方式
(1) 外部引入方式
<!DOCTYPE 根元素名称 SYSTEM “dtd文件路径”>
(2) 使用内部的dtd文件 个人建议使用这个,就不用重新创建文件了
如- <!DOCTYPE 根元素名称 [
<!ELEMENT person (name,age)> 记得空格
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
]>
(3) 使用外部的dtd文件(网络上的dtd文件)
<!DOCTYPE 根元素 PUBLIC “dtd名称” “dtd文件的路径”>
8、使用dtd定义元素
语法:<!ELEMENT 元素名 约束>
简单元素的约束
(#PCDATA):约束的内容是字符串类型
EMPTY:元素为空
ANY:元素为任意
复杂元素的约束
<!ELEMENT 复杂元素 (子元素)>
表示子元素出现的次数 这些符号是在子元素后面添加的
+:表示一次或者多次
?:表示0次或者1次
*:表示0次或者多次
子元素使用逗号,进行隔开 表示元素出现的顺序
子元素用|隔开 表示只能出现其中的任意一个
9、使用dtd定义属性
语法: <!ATTLIST 元素名称 属性名称 属性类型 属性的约束>
属性名称随便写
属性类型:
CDATA:字符串
枚举比如(aa|bb|cc):表示只能在一定的范围内出现,每次只能出现其中的一个 如
ID:值只能是字母或者下划线开头
属性的约束
#REQUIRED:属性必须存在
#IMPLIED:属性可有可无
#FIXED:表示一个固定值 比如 #FIXED “AAA” 那么属性值必须是“AAA”
直接值:如果不写属性,会使用直接值;如果写了属性,那么会使用属性的那个值
10、定义实体
语法: <!ENTITY 实体名称 “实体的值”>
比如 <!ENTITY test “haha”>
使用实体 &实体名称; 比如&test;
注意:定义实体需要写在内部dtd里面
schema约束
特点:- schema符合xml的语法,里面写的是xml语句,与dtd约束不同,dtd是自成一派
- 一个xml中可以有多个schema,多个schema使用名称空间区分
- dtd里面有PCDATA等类型,但是在schema里面可以支持更多的数据类型,比如年龄只能是整数,schema可以严格的规定整数类型
- 但是schema语法更加复杂,还无法代替dtd
快速入门
1、创建一个schema文件,后缀名是.xsd
根节点:<shema>
在schema文件里面的属性
xmlns=http://www.w3.org/2001/XMLSchema 表示当前是一个约束文件
targetNameSpace=http://www.itcast.cn/20151111使用schema约束文件,直接通过地址引入约束文件
elementFormDefault=“qualified”
2、步骤
- 看xml中有多少个元素,有几个就写几个<element>
- 看是否是简单元素或者复杂元素,简单元素写在复杂元素的里面
如 <element name =“person”>
<complexType>
<sequence>
<element name =“name” type=“string”></element>
<element name=“age” type =“ing”></element>
</sequence>
</complexType>
</element>
3、在被约束文件里面引入约束文件
如<person xmlns:xsi=“http://www.w3.org/2001/XMLSchema” xmlns=“http://www.itcast.cn/20151111” xis:schemaLocation=“http://www.itcast.cn/20151111” 1.xsd>
** xmlns:xsi=“http://www.w3.org/2001/XMLSchema”表示xml是一个被约束文件
** xmlns=“http://www.itcast.cn/20151111”是约束文档里面的targetNameSpace
** xis:schemaLocation=“http://www.itcast.cn/20151111” 1.xsd
格式:targetNamespace 空格 约束文档的路径
<sequence>:表示元素按照顺序出现
<all>:表示元素只能出现一次
<choice>:表示元素只能出现其中一个
maxOccurs=“unbounded”:表示元素出现的次数无限制
<any>:表示任意元素
约束属性,写在复杂元素里面,位置 </complexType>之前
<attribute name =“id1” type=“int” use=“required”> </attribute>
name:属性名称 type:属性类型 use:属性是否必须出现