Java学习之路(二)。。。

    又是对XML的进一步深入学习,从上一次的XMl文档的学习,到现在对于XML文档约束,感觉自己在不停的进步。虽然说这只是一小点,但是,能够慢慢积累的话,就能一直走下去。今天主要是对于约束的学习,包括DTD约束和Schema约束,这两个约束都是很好的XML文档约束,DTD是存在自己的语法,有自己的后缀名为.dtd的文件,也可以直接写到XML文档的内部,而Schema约束就是一种XML文档,只是其后缀名为.xsd,是通过链接到XML文档来进行对XML文档的约束。以下是对今天学习的总结:

DTD约束
DTD(Document Type Definition),全称为文档类型定义
DTD
1.编写数据XML --- .xml
2.编写dtd文件
*为文档每一个元素(不同名称)<!ELEMENT
语法 <!ELEMENT 元素名称 子元素>
元素内部文本 #PCDATA
3.将xml文件与dtd文件关联起来
DTD约束即可以作为一个单独的文件编写,也可以在XML文件内编写
xml与dtd关联的三种方式
使用内部DTD ----- 语法 <!DOCTYPE 根元素 [dtd内容]>
使用外部DTD    (引用的本地的dtd)-----<!DOCTYPE 文档根节点 SYSTEM "本地DTD文件的位置">
使用公共DTD       (引用网络上的dtd) ---<!DOCTYPE 文档根节点 PUBLIC "DTD名称" "DTD文件的URL">
公共DTD使用名称 W3C规范官方组织规定的
DTD语法细节
元素(ELEMENT)定义
<!ELEMENT 元素名称 元素内容声明>
*内容特定符号含义
()子元素、分组
,代表子元素顺序
? 代表该对象可以出现,但是只能出现一次
*代表该对象允许出现任意多次,也可以是0次
+表示该对象最少出现一次,可以出现多次
| 表明在列出的对象中选择一个(多选一)
特殊元素内容 :
文本类型内容 #PCDATA 表明该元素可以包含任何字符数据,但是不能在其中包含任何子元素。
EMPTY:如果一个元素的CONTENT被声明为EMPTY的话,表示钙元素不能包含任何子元素和文本,仅可以使用属性。
ANY:表示钙元素中可以包含任何在DTD中定义的元素内容
其他类型:最通常的情况是一个元素本身是由其他元素的集合构成
属性(ATTLIST)定义
语法:<!ATTLIST 元素名称 属性列表>
属性列表:属性名称 类型 约束
属性名称 类型 约束
属性名称 类型 约束
属性名称 类型 约束
……
属性类型
1.CDATA 文本类型属性
2.(值1|值2|值3) 三个值中选一个
3.ID
约束的四种形式
#REQUIRED 属性必须
用来告诉XML解析程序,该元素的所有实例都必须有该属性的值,就像数据表中某一个字段为NOT NULL一样
#IMPLIED 属性可选
表示如果该元素的实例中没有指定该元素的值的话,就忽略该属性,就像在数据表中某一个字段的值可以为NULL一样
#FIXED value 属性值固定
表示包含该属性的元素实例必须在指定列出的值中 比如一个属性名称为学员:学员CDATA"张三"表示属性值只能取"张三"
Defaultvalue 默认值
为属性提供一个默认的值,如果在该属性的实例中没有包含这个属性的话,解析器就认为该属性的值就是张三,如果在该属性的实例中包含了这个属性并赋值了的话,就采用这个赋值
实体(ENTITY)定义
对于xml数据内容的重复,可以抽取一个实体
实体用于为一段内容创建一个别名,以后再XML文档中就可以使用别名引用这段内容了
在DTD定义中,一条<!ENTITY ...>语句用于定义一个实体
引用实体主要在xml文档中被应用
语法格式:
    <!ENTITY 实体名称 "实体内容">:直接转变成实体内容
引用方式:&实体名称;
举例:
<!ENTITY copyright "I am a programmer">
...
&copyright;


XML约束 Schema
XML Schema是用一套预先规定的XML元素和属性创建的,这些元素和属性定义了XML文档的结构和内容模式。XML Schema规定XML文档实例的结构和每个元素/属性的数据类型
Schema相对于DTD的明显好处是,XML Schema文档本身也是XML文档,而不是像DTD一样使用自成一体的语法
XML Schema使用一套预先定义好的元素和属性 开发的
----- 预先定义好元素和属性 规定了Schema结构和内容
-----定义Schema规定文档格式和内容
预先已经定义好元素和属性 -----定义Schema -----定义xml实例
Schema本身也 是xml,不像DTD ,是一套单独的语法
  • XML Schema文件自身就是一个XML文件,但他的扩展名通常为.xsd
  •  一个XML Schema文档通常称之为模式文档(约束文档),遵循这个文档书写的XML文件称之为实例文档
  •  和XML文件一样,一个XML Schema文档也必须有一个根节点,但这个根节点的名称为Schema
  •  编写了一个XML Schema约束文档后,永昌需要把这个文件中声明的元素绑定到一个URI地址上,在XML Schema技术中有一个专业术语来描述这个过程,即把XML Schema文档声明的元素绑定到一个名称空间上,以后XML文件就可以通过这个URI(即名称空间)来告诉解析引擎,xml文档中编写的元素来自哪里,被谁约束
将Schema中定义元素,绑定到URI地址(名称空间)上,用来唯一的表示元素来自哪个Schema。
为什么要有名称空间?一个xml实例 引用多个Schema,当两个Schema定义同名元素,为了区分同名元素引用自哪个文档

Schema
1.编写数据xml文件
2.编写schema文件 .xsd 
1)引入W3C名称空间 xmlns="http://www.w3.org/2001/XMLSchema"
每一个元素对应<ELEMENT>
区分复杂元素和简单元素
2)为Schema定义元素指定名称空间 URI (URI可以是任何人路径)
3.在xml实例数据文件中,引用自定义Schema
  • targetNamespace元素用于指定schema文档中声明的元素属于哪个命名空间
  •  elementFormDefault元素用于指定局部元素是否受到该schema指定targetNamespace所指定的名称空间限定
  •  attributeFormDefault元素用于指定局部属性是否受到该schema指定targetNamespace所指定的名称空间的限定
一般都为qualified
elementFormDefault="unqualified"
1.如果schema将 elementFormDefault="unqualified",xml实例文档 引用名称空间必须使用前缀---前缀修饰根元素
2.当前xml实例文档所有子元素必须不能用前缀
名称空间的概念
在XML Schema中,每个约束模式文档都可以被赋以一个唯一的名称空间,名称空间用一个唯一的URI(Uniform Resource Identifier,统一资源标识符)表示。在XML文件中书写标签时,可以通过名称空间声明(xmlns),来表明当前编写的标签来自哪个Schema约束文档,例如:
<itcast:书架 xmlns:itcast="http://www.itcast.cn">
    <itcast:书>……</itcast:书>
</itcast:书架>
此处使用itcast来指向声明的名称,以便于后面对名称空间的引用
注意:名称空间的名字语法容易让人混淆,尽管以http://开始,哪个URI并不止像一个包含模式定义的文件。事实上,这个URL:http://www.itcast.cn根本没有指向任何文件,只是一个分配的名字。
名称空间 作用 --- 唯一标识schema当中定义元素
Schema元素:简单类型和复杂类型
XML Schema规范中将元素分为两种类型
  • 简单类型元素:简单类型元素只能包含字符内容。这些字符可以被约束为特殊的预定义类型或派生类型。例如,可以指定一个简单元素的内容必须是日期、整数、字符串或者仅仅是一个字符或者一系列字符。type
  • 复杂类型元素:复杂类型元素是包含子元素内容或者属性的元素<complexType><sequence>

以上为对于XML文档约束的一些笔记和总结。。。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值