大二Java Web学习笔记-01(DTD,Schema,命名空间)

一、DTD?

(1)DTD的例子

<?xml version ="1.0" ?>
<!DOCTYPE 员工[
  <!ELEMENT 员工 (姓名,性别,出生日期)>
  <!ELEMENT 姓名 (#PCDATA)>
  <!ELEMENT 性别 (#PCDATA)>
  <!ELEMENT 出生日期 (#PCDATA)>
]>
<员工>
  <姓名>李亮</姓名>
  <性别>男</性别>
  <出生日期>1978.2.5</出生日期>
</员工>

(2)为什么要用到DTD?

  1. 有了DTD,每个XML文件可以携带一个自身格式的描述
  2. 有了DTD,不同组织的人可以使用一个通用DTD用来交换数据。
  3. 应用程序可以使用一个标准DTD校验从外部世界接受来的XML数据是否有效。
  4. 可以使用DTD校验自己的XML数据。

(3)DTD检查的内容包括有?

  1. 检查XML文档中所有的标记是否相符
  2. 是否还包含有其他未定义的子标记等;
  3. 并对各个标记的属性做检查,检查这些属性是否与DTD中的定义相符。

 二、XML Schema(n.纲要)?

(1)Schema基本思想就是为XML文档制定一种模式

      从本质上说,DTDXML Schema的作用是相同的,它们以各自不同的方式来帮助XML的开发者来描述XML文档的结构和数据,都用于XML文档的有效性验证

 (2)Schema与DTD关系

  1. Schema与DTD的作用相同,它们各自以不同的方式来描述XML文档结构,都用于文档验证
  2. Schema囊括了DTD文件所能实现的全部功能,同时它也是一个完全规范的XML文档。Schema正在逐步取代DTD成为验证XML文档合法性的新标准。

 (3)Schema与DTD比较

  1. DTD使用EBNF语法Schema基于XML语法Schema可以像其他XML文档一样被解析和处理;
  2. DTD描述的是XML文件的结构,而非元素内容,因此DTD不能进行数据有效性检查;例如:<price>文字</price>;
  3. Schema大大扩充了数据类型,可以自定义数据类型;
  4. Schema提供一个可扩充的内容模式DTD扩展性相对较差;
  5. Schema可对整个XML文档或文档局部进行验证,而DTD缺乏这种灵活性;
  6. Schema支持名称空间,DTD不支持命名空间。
  7. XML Schema文档本身就是XML文档,因此遵守XML的语法规则;
  8. XML Schema是用一套预先规定的XML元素和属性创建

 (4)在XML Schema需要完成的任务:

  1. 定义可以出现在文档中的元素
  2. 定义可以出现在文档中的属性
  3. 定义元素下的子元素及子元素的顺序、数量
  4. 定义元素和属性的数据类型

 (5)XML Schema的两种模式

        XDR:

  1. Microsoft版本的XML schema叫做XDRXML Data Reduced),它基于XML标准提议中的简化集合,XDR是一个专有规范,但它被相当广泛的采用。

XSD:

  1. W3CXML SchemaXSDXML Schema Definition Language),它是一个比XDR更广泛的规范,并且它有不可否认的非专有的优点。

 三、Schema命名空间?

(1)背景问题:

        当我们在一个XML文档中使用他人的或者多个schema文件,就会出现这样的矛盾:因为XML中标识都是自己创建的,在不同的schema文件中,标识名可能相同但表示的含义不同,这就可能引起数据混乱

例如:在一个文档<table>wood table</table>

                  <table>表示桌子

                             而在另一个文档<table>namelist</table>

                  <table>表示表格

                             如果我需要同时处理这两个文档,就会发生名字冲突。

(2)定义:

  • XML命名空间是XML解决元素多义性和名字冲突问题的方案。
  •   W3C组织的推荐用书对XML命名空间的解释是:“XML命名空间是命名的汇集,它由URI(统一资源标识)确定,在XML文件中作为元素标识和属性名使用”。
  • 命名空间是名称上相关的一组名称的汇集,在同一空间中每一个名称都必须唯一
  • 命名空间表示了名称的来源使用范围通过命名空间可以区分来自不同的XML应用但具有相同名称的标识,可以把来自某种XML应用的相关元素和属性集合在一起,以方便软件识别和处理。

 (3)命名空间的声明:

  • namespaces通过给标识名称加一个URL定位的方法来区别这些名称相同的标识。
  • 命名空间一般用属性xmlns来声明,声明的语法如下:
< 元素名 xmlns:prefix =′URI′>
  1. xmlns:命名空间属性名,声明命名空间必需的属性
  2. prefix:命名空间的前缀,它的值不能为XML。在引用此命名空间中的名称时,需要在名称前加″prefix:″。
  3. URI:统一资源标示符,一个标识网络资源的字符串,包括URL统一资源定位符URN通用资源名字
<?xml version="1.0"?>
<xs:schema xmlns(属性名):xs(前缀)="http://www.w3.org/2001/XMLSchema(统一资源定位符)">
          <!--元素声明部分和属性声明部分-->
</xs:schema>

 (4)命名空间的引用:

引用此名空间中的元素、属性的方法:

                               前缀名:元素名   或     前缀名:属性名

声明时若前缀名省略,则声明的是缺省的空间,引用缺省名空间中的元素、属性时可不加前缀名;缺省的命名空间的声明语法格式为:

                       <元素名 xmlns="URI">

<?xml version="1.0"?>
<xs(前缀):schema(元素名) xmlns:xs="http://www.w3.org/2001/XMLSchema">
          <!--元素声明部分和属性声明部分-->
</xs:schema>

 (5)例子:

<?xml version="1.0"?>
<nsElement  xmlns="http://www.w3.org"(在根元素处定义名空间属性
)
	           xmlns:old="http://zhjnc.edu.cn"	    
                      xmlns:new="http://lingnan.edu.cn">
      <myelement>
            <aa>(使用缺省名空间)
	      this is element use default namespace prefix
	 </aa>
	 <old:aa>(使用指定名空间)
	      this is element use old namespace prefix
	 </old:aa>(使用指定名空间)
	 <new:aa>(使用指定名空间)
	      this is element use new namespace prefix
	 </new:aa>			
      </myelement>			
</nsElement>

(6)XML Schema总结:

问:XML命名空间设计的目的是什么?

     答:解决XML中元素多义性和名字冲突问题的一种方案

问:命名空间的声明中<elementName xmlns:prefix=′URL′> prefix是指什么?

     答:prefix是指命名空间的前缀

问:XML默认的xs前缀命名空间的URL是什么?

     答:http://www.w3.org/2001/XMLSchema

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值