第一章 XML概述
1.XML基本概念
- 什么是xml?
**a.**引入的原因:为了解决不同不同语言之间的数据传输的格式不同
**b.**概念:XML是一种可扩展标记语言,适用于不同数据之间的数据交换
**c.**XML文档:通过元素的嵌套,可以清晰描述树状结构,因此常常被用作存放相关的配置信息
- xml与html的区别?
**a.**HTML用于显示数据,XML用于传输和存储数据
**b.**HTML标签不区分大小写,XML标签严格区分大小写
**c.**HTML可以有多个根元素,XML只有一个根元素,且空格不能向HTML一样自动过滤
**d.**HTML中的标签是预定义标签,而XML中的标签是可扩展标签,需要自己定义
2.xml的语法
**a.**文档说明
java
<?xml version="" encoding="" standalone="">
说明:
此语句必须放在文档的开头,
version为必须的属性,encoding是用来指定编码集,standalone只有两个值yes,no用来表示此文档是否与外部关联(默认)
**b.**元素定义
java
<大学>太原理工大学</大学>
xml文档的元素以树形分层结构排列,一个xml文档有且仅有一个顶层元素
由开始标签,属性,元素内容,结束标签组成
**c.**属性定义
java
<大学 位置="太原">太原理工大学</大学>
一个元素可以定义若干属性,每个属性的值必须通过引号来引用
**d.**注释
java
<!--注释信息-->
3.DTD约束
DTD约束是一种XML约束模式语言,根据它的语法创建的文件称为DTD文件。
- DTD约束的引入
1.引入外部DTD约束文件
apl
方法一:引入本地的DTD文件
<!DOCTYPE 根元素名称 SYSTEM "外部DTD文件的URI">
外部DTD文件的URI:可以是相对路径,也可以是绝对路径
方法二:引入公用的DTD文件
<!DOCTYPE 根元素名称 PUBLIC "DTD名称" "外部DTD文件的URI">
外部DTD文件的URI:只可以是绝对路径
2.XML内部定义DTD约束文件
apl
<!DOCTYPE 根元素名称[DTD定义语句...]>
- DTD约束的语法
1.元素定义
apl
格式:<!ELEMENT 元素名称 元素内容>
元素内容:
1.#PCDATA 元素中嵌套的内容为文本字符串
2.(元素名1,元素名2,元素名3) 子元素
3.EMPTY 空元素
4.ANY 任何元素
5.混合元素
问号[?]:表示该对象可以出现0次或1次。
星号[*]:表示该对象可以出现0次或多次。
加号[+]:表示该对象可以出现1次或多次。
竖线[|]:表示列出的对象中选择1个。
逗号[,]:表示对象必须按照指定的顺序出现。
括号[()]:用于给元素进行分组。
2.属性定义
apl
//格式:
<!ATTLIST 元素名
属性名1 属性类型 设置说明
属性名2 属性类型 设置说明
>
//设置说明:
1.#REQUIRED:表示元素的该属性是必须的
2.#IMPLIED: 表示元素可以包含该属性,也可以不包含该属性
3.#FIXED:表示一个固定的属性默认值,在XML文档中不能将该属性设置为其他值
4.默认值:该属性的值是可以改变的
//属性类型:
1. CDATA:属性类型为字符类型
2. 枚举类型:(属性值1|属性值2|属性值3)可限制属性值取一个
3. ID类型:唯一标识XML中的元素,它的设置说明只可以是#REQUIRED,#IMPLIED
4. IDREF:表示一对一关系
5. IDREFS:表示一对多的关系
4.Schema约束
XML Schema是一种用于定义和描述XML文档结构与内容的模式语言(.xsd)
- Schema约束支持名称空间
1.名称空间的定义
apl
一个XML文档可以引入多个约束文档,但是,由于约束文档中的元素或属性都是自定义的,所以在XML文档中,极有可能出现代表不同含义的同名元素或属性,导致名称发生冲突。为此,在XML文档中,提供了名称空间,它可以唯一标识一个元素或者属性
2.名称空间的引入
apl
<元素名 xmlns:prefixname="URI">
注意:基本名称空间它们是xml和xmlns不可以做prefixname
- Schema约束的引入
1.使用名称空间引入XML Schema文档
apl
需要通过属性xsi:schemaLocation来声明名称空间的文档xsi:schemaLocation属性是在标准名称空间"http://www.w3.org/2001/XMLSchema-instance"中定义的,在该属性中,包含了两个URI,这两个URI之间用空白符分隔。其中,第一个URI是名称空间的名称,第二个URI是文档的位置。
示范:
<元素名 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="Schema文件名 Schema文件路径">
2.通过xsi:noNamespaceSchemaLocation属性直接指定
apl
通过xsi:noNamespaceSchemaLocation属性直接指定,它是在标准名称空间"http://www.w3.org/2001/XMLSchema-instance"中定义的,它用于定义指定文档的位置。
示范:
<元素名 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="Schema文件路径">
- Schema约束的语法
1.元素定义
apl
<xs:element name="名称" type="类型"/>
2.属性定义
apl
<xs:attribute name="xxx" type="yyy"/>
3.简单类型
在XML Schema文档中,只包含字符数据的元素都是简单类型的。
xml
<xs:element name="age">
<xs:simpleType>
<xs:restriction base="xs:integer">
...限制条件
</xs:restriction>
</xs:simpleType>
</xs:element>
xml
1.对元素的值的大小的限制
<xs:element name="age">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:minInclusive value="18"/>
<xs:maxInclusive value="58"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
2.对元素的设置枚举类型
<xs:element name="car">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="Audi"/>
<xs:enumeration value="Golf"/>
<xs:enumeration value="BMW"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
3.对元素一系列值的设置
<xs:element name="letter">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[a-z]"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
4.对元素空白字符的限定
<xs:element name="address">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:whiteSpace value="preserve"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
whiteSpace元素有三个属性值可以设定,分别是preserve、replace和collapse。其中,preserve表示不对元素中的任何空白字符进行处理,replace表示移除所有的空白字符,collapse表示将所有的空白字符缩减为一个单一字符。
4.复杂类型
在定义复杂类型时,需要使用xs:complexType元素来定义。复杂类型的元素可以包含子元素和属性,这样的元素称为复合元素。
1.定义属性和子元素
xml
<xs:element name="">
<xs:complexType>
<xs:attribute name="" type=""/>
<xs:element name="" type=""/>
<xs:element name="" type=""/>
</xs:complexType>
</xs:element>
2.包含字符数据
对于仅含文本的复合元素,需要使用"simpleContent"元素添加内容。在使用简易内容时,必须在"simpleContent"元素内定义扩展或限定,这时,需要使用"extension"或"restriction"元素来扩展或限制元素的基本简易类型
xml
<xs:element name="">
<xs:complexType mixed="true">//表示可以和字符元素混合使用
<xs:simpleContent>
<xs:extension base="xs:integer">
<xs:attribute name="" type="" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>