动态网站开发02:Java web

动态网站开发02
一、前言
二、笔记
(一)、XML基础
1、XML概述
2、XML与HTML的比较
(二)、XML语法
1、XML文档的声明
2、XML元素的定义
3、XML属性的定义
4、XML注释的定义
5、XML文件示例
(三)DTD约束
1、什么是XML约束
2、什么是DTD约束
3、DTD的引入
(1)引入本地DTD文件
(2)引入公共的DTD文件
(3)采用内嵌方式实现DTD对XML的约束
5、DTD约束的语法
(1)元素定义
(2)元素内容
(3)元素内容包含的符号
(4)属性定义
(5)属性设置说明
(6)属性类型
(四)Schema约束
1、什么是Schema约束
2、Schema约束的优点
3、Schema约束的文档
4、名称空间
5、声明名称空间的格式
6、引入Schema文档
7、Schema语法
(1)元素定义
一、前言
假设一个微信群里面小明发了一条消息“你吃过没”。而这条消息发出后会被储存到服务器里,而当你进入微信的时候,这条消息就会从服务器里抓取过来显示到你的手机上。而这个抓取的过程中假设是以xml文件来传输

二、笔记
(一)、XML基础
1、XML概述
XML是EXtensible Markup Language的缩写,它是一种类似于HTML的标记语言,称为可扩展标记语言。XML用于提供数据描述格式,适用于不同应用程序之间的数据交换,而且这种交换不以预先定义的一组数据结构为前提,增强了可扩展性。
在现实生活中,很多事物之间都存在着一定的层次关系,例如中国有很多省份,每个省份下又有很多城市,这些中国与所辖省、市之间的层次关系可以通过一张树状结构图描述。
2、XML与HTML的比较
HTML用于显示数据,XML用于传输和存储数据。
HTML标签不区分大小写,而XML标记严格区分大小写。
HTML可以有多个根元素,而格式良好的XML有且只能有一个根元素。
在HTML中,空格是自动过滤的,而在XML中,空格不会自动过滤。
HTML中的标签是预定义的标签,而XML中的标记可以根据需要自己定义,并且可扩展。
(二)、XML语法
1、XML文档的声明
从XML 1.1开始,在一个完整的XML文档中,必须包含一个XML文档的声明,并且该声明必须位于文档的第一行。
XML文档声明的语法格式:<?xml version="version" encoding="value" standalone="value"?>
2、XML元素的定义
XML文档中的主体内容都是由元素(Element)组成的,元素是以树形分层结构排列的,一个元素可以嵌套在另一个元素中。XML文档中有且仅有一个顶层元素,称为文档元素或根元素。元素一般是由开始标签、属性、元素内容和结束标签构成。
<售价 单位=“元”>20</售价>
1
3、XML属性的定义
在XML文档中,可以为元素定义属性。属性是对元素的进一步描述和说明。在一个元素中,可以自定义多个属性,属性是依附于元素存在的,并且每个属性都有自己的名称和取值。
需要注意的是,在XML文档中,属性的命名规范与元素相同,属性值必须要用双引号(“”)或者单引号(‘’)引起来,否则被视为错误。
4、XML注释的定义
注释是为了便于阅读和理解,如果想在XML文档中插入一些附加信息,比如作者姓名、地址或电话等,这些信息是对文档结构或文档内容的解释,不属于XML文档的内容,因此XML解析器不会处理注释内容。XML文档的注释以字符串“ ”结束。
5、XML文件示例

<?xml version="1.0" encoding="UTF-8"?> Belgian Waffles $5.95 two of our famous Belgian Waffles with plenty of real maple syrup 800 Strawberry Belgian Waffles $4.50 light Belgian waffles covered with strawberries and whipped cream 300 Berry-Berry Belgian Waffles $8.95 light Belgian waffles covered with an assortment of fresh berries and whipped cream 900 French Toast $4.50 thick slices made from our homemade sourdough bread 550 Homestyle Breakfast $6.95 two eggs, bacon or sausage, toast, and our ever-popular hash browns 950

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
Spring项目的pom.xml配置文件

<?xml version="1.0" encoding="UTF-8"?>


4.0.0

<groupId>net.huawei.spring</groupId>
<artifactId>SpringDemo</artifactId>
<version>1.0-SNAPSHOT</version>

<dependencies>
    <!--Spring核心-->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>5.3.25</version>
    </dependency>       
    <!--单元测试-->
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.13.2</version>
        <scope>test</scope>
    </dependency>
</dependencies>

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
(三)DTD约束
1、什么是XML约束
XML文档中的标签是可以随意定义的,同一本书出现了两种售价,如果仅根据标签名称区分哪个是原价,哪个是会员价,这是很难实现的。为此,在XML文档中,定义了一套规则对文档中的内容进行约束,这套规则称为XML约束。对XML文档进行约束时,同样需要遵守一定的语法规则,这种语法规则就形成了XML约束语言。
2、什么是DTD约束
DTD约束是早期出现的一种XML约束模式语言,根据它的语法创建的文件称为DTD文件。在一个DTD文件中,可以包含元素的定义、元素之间关系的定义、元素属性的定义以及实体和符号的定义。
book.dtd是一个简单的DTD约束文档。每个元素都是按照book.dtd文档所规定的约束进行编写的。
3、DTD的引入
在XML文档中引入外部DTD文件有两种方式
第1种方式:
第2种方式:
1
2
第1种方式用来引用本地的DTD文件;第2种方式用来引用公共的DTD文件,其中“外部DTD文件的URI”指的是DTD文件在本地存放的位置,对于第1种方式,它可以是XML文档的相对路径,也可以是一个绝对路径,对于第2种方式,它是Internet上的一个绝对URL地址。
(1)引入本地DTD文件
对文件·book.xm进行修改,在XML文档中引入本地的DTD文件book.dtd

<?xml version="1.1" encoding="UTF-8"?>

<书架>
<书>
<书名>徒然草</书名>
<作者>吉田兼好</作者>
<售价>34.00元</售价>
</书>
<书>
<书名>精通Spring框架</书名>
<作者>魏赫布</作者>
<售价>49.00元</售价>
</书>
</书架>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
(2)引入公共的DTD文件
引入一个公共的DTD文件,则需要在DOCTYPE声明语句中使用PUBLIC属性

1
2
3
4
其中"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"是DTD名称,它用于说明DTD符合的标准、所有者的名称以及对DTD描述的文件进行说明,虽然DTD名称看上去比较复杂,但这完全是由DTD文件发布者去考虑的事情,XML文件的编写者只要把DTD文件发布者事先定义好的DTD标识名称进行复制就可以了。
(3)采用内嵌方式实现DTD对XML的约束
DTD对XML文档的约束,除了通过外部引入方式实现外,还可以采用内嵌的方式。
在XML中直接嵌入DTD定义语句的完整语法格式

<?xml version="1.1" encoding="UTF-8" standalone="yes"?>

1
2
3
4
5
6
对book.xml进行修改,在book.xml文档中直接嵌入book.dtd文件

<?xml version="1.1" encoding="UTF-8"?>
<!ELEMENT 书 (书名,作者,售价)>
<!ELEMENT 书名 (#PCDATA)>
<!ELEMENT 作者 (#PCDATA)>
<!ELEMENT 售价 (#PCDATA)>

]>
<书架>
<书>
<书名>徒然草</书名>
<作者>吉田兼好</作者>
<售价>34.00元</售价>
</书>
<书>
<书名>精通Spring框架</书名>
<作者>魏赫布</作者>
<售价>49.00元</售价>
</书>
</书架>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
5、DTD约束的语法
在编写XML文档时,需要掌握XML语法。同理,在编写DTD文档时,也需要遵循DTD的语法。DTD的结构一般由元素类型定义、属性定义、实体定义、记号定义等构成,一个典型的DTD文档类型定义会把将来要创建的XML文档的元素结构、属性类型、实体引用等预先进行定义。
(1)元素定义
元素是XML文档的基本组成部分,在DTD定义中,每一条<!ELEMENT…>语句用于定义一个元素
基本语法格式:<!ELEMENT 元素名称 元素内容>
在上面元素的定义语法格式中,包含了“元素名称”和“元素内容”。其中,“元素名称”是被约束的XML文档中的元素,“元素内容”是对元素包含内容的声明,其内容包括数据类型和符号两部分。
(2)元素内容

元素 说明
#PCDATA 表示元素中嵌套的内容是普通文本字符串,其中关键字PCDATA是Parsed Character Data的简写。
子元素 说明元素包含其他元素。通常用一对小括号()将元素中要嵌套的一组子元素括起来。
混合内容 表示元素既可以包含字符数据,也可以包含子元素。混合内容必须被定义零个或多个。
EMPTY 表示该元素既不包含字符数据,也不包含子元素,是一个空元素。如果在文档中元素本身已经表明了明确的含义,就可以在DTD中用关键字EMPTY表明空元素。
ANY 表示该元素可以包含任何字符数据和子元素。
(3)元素内容包含的符号
在定义元素时,元素内容可以包含一些符号,不同的符号具有不同的作用

符号 作用
问号[?] 表示该对象可以出现0次或1次
星号[*] 表示该对象可以出现0次或多次
加号[+] 表示该对象可以出现1次或多次
竖线[] 表示列出的对象中选择1个
逗号[,] 表示对象必须按照指定的顺序出现
括号[()] 用于给元素进行分组
(4)属性定义
在DTD文档中,定义元素的同时,还可以为元素定义属性。
DTD属性定义的基本语法格式

<!ATTLIST 元素名 属性名1 属性类型 设置说明 属性名2 属性类型 设置说明 ...... >

1
2
3
4
5
6
在上面属性定义的语法格式中,“元素名”是属性所属元素的名字,“属性名”是属性的名称,“属性类型”则是用来指定该属性是属于哪种类型,“设置说明”用来说明该属性是否必须出现。
(5)属性设置说明

设置说明 含义
#REQUIRED 表示元素的该属性是必须的,例如,当定义联系人信息的DTD时,我们希望每一个联系人都有一个联系电话属性,这时,可以在属性声明时,使用REQUIRED
#IMPLIED 表示元素可以包含该属性,也可以不包含该属性。例如,当定义一本书的信息时,发现书的页数属性对读者无关紧要,这时,在属性声明时,可以使用IMPLIED
#FIXED 表示一个固定的属性默认值,在XML文档中不能将该属性设置为其他值。使用#FIXED关键字时,还需要为该属性提供一个默认值。当XML文档中没有定义该属性时,其值将被自动设置为DTD中定义的默认值
默认值 和FIXED一样,如果元素不包含该属性,该属性将被自动设置为DTD中定义的默认值。不同的是,该属性的值是可以改变的,如果XML文件中设置了该属性,新的属性值会覆盖DTD中定义的默认值
(6)属性类型
CDATA是最常用的一种属性类型,表明属性类型是字符数据,与元素内容说明中的#PCDATA相同。当然,在属性设置值中出现的特殊字符,也需要使用其转义字符序列表示,例如,用“&”表示字符“&”,用“<”表示字符“<”等。
Enumerated(枚举类型),在声明属性时,可以限制属性的取值只能从一个列表中选择,这类属性属于Enumerated(枚举类型)
一个ID类型的属性用于唯一标识XML文档中的某个元素。ID类型的属性值必须遵守XML名称定义的规则。一个元素只能有一个ID类型的属性,而且ID类型的属性必须设置为#IMPLIED或#REQUIRED。因为ID类型属性的每一个取值都是用来标识一个特定的元素,所以为ID类型的属性提供默认值,特别是固定的默认值是毫无意义的。
除了讲述的几种属性类型外,DTD约束中还有IDREF、IDREFS、NMTOKEN、NMTOKENS、NOTATION、ENTITY和ENTITYS几种属性类型,由于篇幅有限,此处就不一一列举。
(四)Schema约束
目标:掌握Schema约束的名称空间,如何引入Schema文档,以及Schema语法
1、什么是Schema约束
同DTD一样,XML Schema也是一种用于定义和描述XML文档结构与内容的模式语言,它的出现克服了DTD 的局限性。
2、Schema约束的优点
DTD采用的是非XML语法格式,缺乏对文档结构、元素、数据类型等全面的描述。XML Schema采用的是XML语法格式,而且它本身也是一种XML文档,因此,XML Schema语法格式比DTD更好理解。
XML有非常高的合法性要求,XML DTD对XML的描述,往往也被用作验证XML合法性的一个基础,但是XML DTD本身的合法性却缺少较好的验证机制,必需独立处理。XML Schema则不同,它与XML有着同样的合法性验证机制。
XML Schema对名称空间支持得非常好,而DTD几乎不支持名称空间。
DTD支持的数据类型非常有限。
DTD定义约束的能力非常有限,无法对XML实例文档作出更细致的语义限制。
3、Schema约束的文档
XML Schema的功能比DTD强大很多,但相应的语法也比DTD复杂很多。
看一个简单的Schema文档

<?xml version="1.0"?>

<xs:schema xmlns:xs=“http://www.w3.org/2001/XMLSchema”>
<xs:element name=“root” type=“xs:string”/>
</xs:schema>

1
2
3
4
5
Schema文档,以xsd作为后缀名,以xs:schema作为根元素,表示模式定义的开始。

4、名称空间
一个XML文档可以引入多个约束文档,但是,由于约束文档中的元素或属性都是自定义的,所以在XML文档中,极有可能出现代表不同含义的同名元素或属性,导致名称发生冲突。为此,在XML文档中,提供了名称空间,它可以唯一标识一个元素或者属性。这就好比打车去小营,由于北京有两个地方叫小营,为了避免司机走错,我们就会说“去亚运村的小营”或者“去清河的小营”。这时的亚运村或者清河就相当于一个名称空间。
5、声明名称空间的格式
名称空间的声明就是在XML文档中为某个模式文档的名称空间指定一个临时名称,它通过一系列的保留属性来声明,这种属性的名字必须是以“xmlns”或者以“xmlns:”作为前缀。它与其他任何XML属性一样,都可以通过直接或者使用默认的方式给出。
名称空间声明的语法格式: <元素名 xmlns:prefixname=“URI”>
注意:元素名指的是在哪一个元素上声明名称空间,在这个元素上声明的名称空间适用于声明它的元素和属性,以及该元素中嵌套的所有元素及其属性。xmlns:prefixname指的是该元素的属性名,它所对应的值是一个URI引用,用来标识该名称空间的名称。需要注意的是,如果有两个URI并且其组成的字符完全相同,就可以认为它们标识的是同一个名称空间。
创建book2.xml,在book2.xml文档中学习名称空间的使用。

<?xml version="1.1" encoding="UTF-8"?>

<lzy:书架 xmlns:lzy=“http://www.lzy.org/xmlbook/schema”>
lzy:书
lzy:书名徒然草</lzy:书名>
lzy:作者吉田兼好</lzy:作者>
lzy:售价34.00元</lzy:售价>
</lzy:书>
lzy:书
lzy:书名精通Spring框架</lzy:书名>
lzy:作者魏赫布</lzy:作者>
lzy:售价49.00元</lzy:售价>
</lzy:书>
</lzy:书架>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
注意:在声明名称空间时,有两个前缀是不允许使用的,它们是xml和xmlns。xml前缀被定义为与名称空间名字http://www.w3.org/XML/1998/namespace绑定,只能用于XML 1.0规范中定义的xml:space和xml:lang属性。前缀xmlns仅用于声明名称空间的绑定,它被定义为与名称空间名字http://www.w3.org/2000/xmlns绑定。
6、引入Schema文档

引入方式 说明
使用名称空间引入XML Schema文档 在使用名称空间引入XML Schema文档时,需要通过属性xsi:schemaLocation来声明名称空间的文档,xsi:schemaLocation属性是在标准名称空间“http://www.w3.org/2001/XMLSchema-instance”中定义的,在该属性中,包含了两个URI,这两个URI之间用空白符分隔。其中,第一个URI是名称空间的名称,第二个URI是文档的位置。
通过xsi:noNamespaceSchemaLocation属性直接指定 通过xsi:noNamespaceSchemaLocation属性直接指定,noNamespaceSchemaLocation属性也是在标准名称空间“http://www.w3.org/2001/XMLSchema-instance”中定义的,它用于定义指定文档的位置。
7、Schema语法
(1)元素定义
Schema和DTD一样,都可以定义XML文档中的元素。
在Schema文档中,元素定义的语法格式:<xs:element name=“名称” type=“类型”/>
element用于声明一个元素,名称指的是元素的名称,类型指元素的数据类型。
在XML Schema 中有很多内建的数据类型,最常用的类型如下表\

类型 说明
xs:string 表示字符串类型
xs:decimal 表示小数类型
xs:integer 表示整数类型
xs:boolean 表示布尔类型
xs:date 表示日期类型
xs:time 表示时间类型
————————————————
版权声明:本文为CSDN博主「ZQIR12」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/ZQIR12/article/details/131130179

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值