·您的位置: 首页 » 资源教程 » 编程开发 » HTML、CSS » XML Schema用法(1)

XML Schema用法(1)

类别: XML教程  评论数:0 总得分:0
     你现在应该知道XML只说明数据的结构而并不关心数据是如何具体描述的、数据是否正确。XML文档的强制性结构化需求是通过DTD(文档类型说明)来实现的。那就是本系列文章中先前讲述的主题。在本文里,我们概要介绍DTD所存在的缺点,讨论新型的更为强大的标准XML Schema。
  
  
  --------------------------------------------------------------------------------
  
  其他文章
  以下是本系列的另两篇文章:
  XML的基本语法
  DTD文档格式
  
  --------------------------------------------------------------------------------
  
  DTD的麻烦
  
  使用DTD虽然在指定许可的元素、需要的元素以及给定XML文档中如何组织元素等方面给我们以较大的方便,但是,一旦你想针对特定元素施加数据类型就会遇到麻烦了。DTD规范严格地定义了结构,但只支持相对功能较弱的内容类型规范,而对强制性结构化却无计可施,比如名为Date 的数据如何规定它必须包含有效值呢?
  
  这就要指望XML Schema了,XML Schema目前作为建议已经于2001年提交给了W3C ,这意味着它最终将成为一般用途的建议标准。假如你对此感兴趣,你不妨到W3C网站找些官方文档和内容简介之类的材料来看看。注意,其他schema定义也是有的,包括日本的标准RELAX 和微软公司的XDR。可是,XML Schema是唯一受到W3C成为的建议标准,所以我在这篇文章中只对它进行阐述。
  
  XML Schema不仅可以让你定义XML文档的结构而且还允许你约束文档的内容,这就不同于DTD了。另外,一个 XML Schema自身就是一个XML文档,其基于标签的语法比DTD中的特殊字符要清楚多了。
  
  
  Schema概述
  
  XML Schema是用一套预先规定的XML元素和属性创建的,这些元素和属性定义了文档的结构和内容模式。相应的一套精巧的规则(这些规则却很有意思的用DTD来表示)指定了每个Schema元素或者属性的合法用途。如果违反这些规则解析器就会拒绝解析你的Schema以及任何同它相联系的文档。
  
  现在让就让我们来看看清单A中显示的XML Schema示例,该例对我们以前在清单B中用到的图书目录进行了说明。清单B有了点小改动:作为根元素的catalog现在有了两个新属性,它们通过清单A中的catalog schema与之关联。
  
  你再看catalog schema,很快你就会注意到它包含了标准的XML头,这表示schema自己就是一个XML文档。而任何schema的根元素都必须是schema,它有一个或者多个说明自己的属性。在这种情况下,schema的namespace定义属性(xmlns)会定义名称空间为xs,它将用作文档中所有元素的根名称空间。
  
  
  --------------------------------------------------------------------------------
  
  什么是名称空间
  XML把名称空间定义为包装XML元素在一起供以后重用的方式。为了使用XML文档的名称空间中定义的元素,你必须通过xmlns属性声明你希望采用名称空间。你还必须为该名称空间定义快捷方式的前缀(例如xs:)作为你文档中的根元素,从而使得名称空间在文档中都可用。前缀是用于文档的任何导入名称空间的元素的标识符。这一过程就如同在Visual Basic中给库加索引或者导入模块;C++、Java或者.NET下的名称空间也具有同样的含义。
  
  
  --------------------------------------------------------------------------------
  
  我们的schema示例中接下来的元素是annotation,它的作用是代表同其父元素有关的文档。annotation可以包含两个子元素之一,或者是documentation或者是appinfo,或者两者都包含进去。前者用于可读的文档,而后者则用来保存供应用程序处理的指令。
  
  接下来我们定义了两个主要的元素(根元素catalog及其子元素book),它们用在书目文档内,后者采用了两个element元素。这些元素都包含了定义名字的属性和各个元素准许的内容。在这种情况下,catalog元素被定义为catalogtype类型,而book元素则被定义为elementtype类型;这两种类型以后还要在schema文档中被定义。
  

-= 资 源 教 程 =-
文 章 搜 索
关键词:
类型:
范围:
纯粹空间 softpure.com
Copyright © 2006-2008 暖阳制作 版权所有
QQ: 15242663 (拒绝闲聊)  Email: faisun@sina.com
 纯粹空间 - 韩国酷站|酷站欣赏|教程大全|资源下载|免费博客|美女壁纸|设计素材|技术论坛   Valid XHTML 1.0 Transitional
百度搜索 谷歌搜索 Alexa搜索 | 粤ICP备19116064号-1