加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

webservice初次相识之XML限制文件DTD和Schema

发布时间:2020-12-17 01:00:26 所属栏目:安全 来源:网络整理
导读:前言:这里备注一些webservice学习之前的基础,讲解编写XML文件的两种限制文件DTD和Schema。 第一部分:DTD 1、DTD的作用: ?定义一个 XML 文档的合法元素,为 XML 文档声明合法的元素、属性、实体以及 CDATA 部分。 ?2、编写DTD与XML的分离 ?(1)、编写DTD

前言:这里备注一些webservice学习之前的基础,讲解编写XML文件的两种限制文件DTD和Schema。

第一部分:DTD

1、DTD的作用:

?定义一个 XML 文档的合法元素,为 XML 文档声明合法的元素、属性、实体以及 CDATA 部分。
?2、编写DTD与XML的分离
?(1)、编写DTD文件human.dtd
? <?xml version="1.0" encoding="UTF-8"?>
? <!ELEMENT human (kind)>
? <!ELEMENT kind (area+)>
? <!ELEMENT area (name,spid)>
? <!ELEMENT name (#PCDATA)>
? <!ELEMENT spid (#PCDATA)>
(2)、根据DTD编写XML文件
?在XML内部引用一个外部声明 的DTD
?<?xml version="1.0" encoding="UTF-8"?>
?<!DOCTYPE human SYSTEM "human.dtd">
?<human>
? ? ?<kind>
? ? ? ? <area>
? ? ? ? ? <name>BLACK</name>
? ? ? ? ? <spid>AFRICA</spid>
? ? ? ? </area>
? ? ? ? <area>
? ? ? ? ? <name>WHITE</name>
? ? ? ? ? <spid>AMERICA</spid>
? ? ? ? </area>
? ? ?</kind>
?</human>
3、Schema和DTD的关系和区别
?关系:
?XML Schema 用于定义 XML 文档的合法元素,类似 DTD。
?XML Schema 是基于 XML 的 DTD 替代物。
?区别:

?与 DTD 不同,XML Schema 支持数据类型和命名空间。

第二部分:SChema

1、什么是 XML Schema:
? XML Schema 的作用是定义 XML 文档的合法构建模块,类似 DTD。(--W3CSchool)
2、学习背景:
? 了解了:HTML / XHTML , ?XML 以及 XML 命名空间 和 DTD
? -----解决问题:
? 通过一种更加合理的基于XML语法的方式来编写XML的限制文件。
? 使用命名空间支持多个名称相同的元素(防止元素冲突)。
? schema可以很好地完成对java或者所有对象的修饰并且提供了大量的数据类型;
3、XML schema的特性:
? XML Schema 的重要特性是,它们由 XML 编写
? XML Schema 是可扩展的,因为它们由 XML 编写
? XML Schema 最重要的能力之一就是对数据类型的支持?
4、XML Schema可以做什么:
? 定义可出现在文档中的元素?
? 定义可出现在文档中的属性?
? 定义哪个元素是子元素?
? 定义子元素的次序?
? 定义子元素的数目?
? 定义元素是否为空,或者是否可包含文本?
? 定义元素和属性的数据类型?
? 定义元素和属性的默认值以及固定值?
? --->它应用于XML文件,schema是继承自DTD的,所以上面的限制有些是同DTD一致的,
? 而Schema解除了DTD的不足之处(如:重名),并解决了数据类型(提供大量数据类型)。
5、XML Schema 可保护数据通信
? 当数据从发送方被发送到接受方时,其要点是双方应有关于内容的相同的“期望值”。
? 通过 XML Schema,发送方可以用一种接受方能够明白的方式来描述数据。
? 一种数据,比如 "03-11-2004",在某些国家被解释为11月3日,而在另一些国家为当作3月11日。
? 但是一个带有数据类型的 XML 元素,比如:<date type="date">2004-03-11</date>,可确保
? 对内容一致的理解,这是因为 XML 的数据类型 "date" 要求的格式是 "YYYY-MM-DD"。(--W3CSchool)
?--->注意:Schema会自动检测数据的格式。
6、编写一个形式良好的XML的条件:
?必须以 XML 声明开头?
?必须拥有唯一的根元素?
?开始标签必须与结束标签相匹配?
?元素对大小写敏感?
?所有的元素都必须关闭?
?所有的元素都必须正确地嵌套?
?必须对特殊字符使用实体?
? --->注意:即使文档的形式良好,仍然不能保证它们不会包含错误,并且这些错误可能会产生严重的后果
7、一个XML Schema的xsd文件,note.xsd:
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
? ? ? targetNamespace="http://www.w3school.com.cn"
? ? ? xmlns="http://www.w3school.com.cn"
? ? ? elementFormDefault="qualified">
?<xs:element name="note">
? ? <xs:complexType>
? ? ? <xs:sequence>
<xs:element name="to" type="xs:string"/>
<xs:element name="from" type="xs:string"/>
<xs:element name="heading" type="xs:string"/>
<xs:element name="body" type="xs:string"/>
? ? ? </xs:sequence>
? ? </xs:complexType>
?</xs:element>
</xs:schema>
8、引用xsd文件:
<?xml version="1.0"?>
<note
? xmlns="http://www.w3school.com.cn"
? xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
?<!--引用xsd文件 -->
? xsi:schemaLocation="http://www.w3school.com.cn note.xsd"> ? <to>George</to> ? <from>John</from> ? <heading>Reminder</heading> ? <body>Don't forget the meeting!</body> </note> 9、完善xsd文件: ?创建简单元素:<xs:element name="xxx" type="yyy"/> ?声明属性:<xs:attribute name="xxx" type="yyy"/> ?常用数据类型:xs:string ,xs:decimal, xs:integer, xs:boolean, xs:date ,xs:time? ?定义数据限制: ?enumeration 定义可接受值的一个列表? ?fractionDigits 定义所允许的最大的小数位数。必须大于等于0。? ?length 定义所允许的字符或者列表项目的精确数目。必须大于或等于0。? ?maxExclusive 定义数值的上限。所允许的值必须小于此值。? ?maxInclusive 定义数值的上限。所允许的值必须小于或等于此值。? ?maxLength 定义所允许的字符或者列表项目的最大数目。必须大于或等于0。? ?minExclusive 定义数值的下限。所允许的值必需大于此值。? ?minInclusive 定义数值的下限。所允许的值必需大于或等于此值。? ?minLength 定义所允许的字符或者列表项目的最小数目。必须大于或等于0。? ?pattern 定义可接受的字符的精确序列。? ?totalDigits 定义所允许的阿拉伯数字的精确位数。必须大于0。? ?whiteSpace 定义空白字符(换行、回车、空格以及制表符)的处理方式。? 10、数据限制实例: 枚举类型: <xs:element name="gender"> <xs:simpleType> ? <xs:restriction base="xs:string"> ? ? <xs:pattern value="male|female"/> ? </xs:restriction> </xs:simpleType> </xs:element>? 数值范围: <xs:element name="age"> <xs:simpleType> ? <xs:restriction base="xs:integer"> ? ? <xs:minInclusive value="0"/> ? ? <xs:maxInclusive value="120"/> ? </xs:restriction> </xs:simpleType> </xs:element>? 11、命名空间: ?如上10中的实例:xs就是命名空间。 ?定义命名空间用xmlns:xs,xmlns为默认命名空间。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读