XML之——XML入门与约束

概念

Extensilble Markup Language 可扩展编辑语言
可扩展:标签都是自定义的
例如:<user><student>

功能

  • 存储数据
    • 1、配置文件
    • 2、网络中传输

XML与HTML区别

  • XML标签自定义的、Html标签是预定义的
  • XML是语法严格的、Html是松散的
  • XML是存储数据的、Html是展示数据的

语法

  • XML文档的后缀名:.xml
  • 第一行必须写文档声明
  • xml文档中有且仅有一个根标签
  • 属性值必须使用引号,单双都可以
  • 标签必须有结束(正确关闭)
  • xml标签名称区分大小写

例子

1
2
3
4
5
6
7
8
9
10
11
<?xml version="1.0" ?>
<users>
<user>
<name>张三</name>
<age>18</age>
</user>
<user>
<name>李四</name>
<age>17</age>
</user>
</users>

组成部分

  • 文档声明
    • 格式:<?xml 属性列表 ?>
    • 属性列表:
      • version:版本号,必须属性
      • encoding:编码方式,默认:iso-8859-1
      • standalone:是否独立(是否依赖其他文件:yes、no)
  • 指令(结合css控制标签样式的,了解以下即可)
    • <?xml-stylesheet type="text/css" href="a.css">
  • 标签
  • 属性
    • id属性值唯一
  • 文本
    • CDATA区:在区域中的文本将会原样展示
    • 格式:<![CDATA[展示的数据]]>

约束

规定xml文档的书写规则

作为框架的使用者(程序员)

  • 能够在xml中引入约束文档
  • 能够简单的读懂约束文档

分类

  • DTD:一种简单的约束技术,但有缺陷
  • Schema:一种复杂的约束技术

DTD

  • 引入DTD文档道xml文档中

    • 内部DTD:将约束规则定义在xml文档中
    • 外部DTD:将约束规则定义在xml文档外
  • 缺陷:不能对内容进行约束,例如年龄

  • 解决方法:使用Schema技术约束

DTD例子

  • 约束
1
2
3
4
5
6
<!ELEMENT students (student*) >
<!ELEMENT student (name,age,sex)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT sex (#PCDATA)>
<!ATTLIST student number ID #REQUIRED>
  • xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE students SYSTEM "student.dtd">

<students>


<student number="itcast_0001">

<name>tom</name>

<age>18</age>

<sex>male</sex>

</student>

</students>

Schema约束技术

  • xml

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    <?xml version="1.0" encoding="UTF-8" ?>
    <!--
    1.填写xml文档的根元素
    2.引入xsi前缀. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    3.引入xsd文件命名空间. xsi:schemaLocation="http://www.itcast.cn/xml student.xsd"
    4.为每一个xsd约束声明一个前缀,作为标识 xmlns="http://www.itcast.cn/xml"


    -->
    <students xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://www.itcast.cn/xml"
    xsi:schemaLocation="http://www.itcast.cn/xml student.xsd"
    >
    <student number="heima_0001">
    <name>tom</name>
    <age>18</age>
    <sex>male</sex>
    </student>

    </students>
  • 约束

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?xml version="1.0"?>
<xsd:schema xmlns="http://www.itcast.cn/xml"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.itcast.cn/xml" elementFormDefault="qualified">
<xsd:element name="students" type="studentsType"/>
<xsd:complexType name="studentsType">
<xsd:sequence>
<xsd:element name="student" type="studentType" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="studentType">
<xsd:sequence>
<xsd:element name="name" type="xsd:string"/>
<xsd:element name="age" type="ageType" />
<xsd:element name="sex" type="sexType" />
</xsd:sequence>
<xsd:attribute name="number" type="numberType" use="required"/>
</xsd:complexType>
<xsd:simpleType name="sexType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="male"/>
<xsd:enumeration value="female"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ageType">
<xsd:restriction base="xsd:integer">
<xsd:minInclusive value="0"/>
<xsd:maxInclusive value="256"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="numberType">
<xsd:restriction base="xsd:string">
<xsd:pattern value="heima_\d{4}"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>