一个简单的XML Schema的例子

xml

我们可以看到,DTD的语法相当复杂,并且它不符合XML文件的标准,自成一个体系。也就是说DTD文档本身并不是一个良好形式的XML文档,上面的关于DTD的介绍也仅仅是作了一个简介,目的是帮助大家能读懂DTD文件以及在必要时创建简单的DTD文件,因为现在很多的XML应用是建立在DTD之上的。
另外一个代替DTD的就是W3C定义的Schema,Schema从字面意义上来说,可以翻译成模式、大纲、计划、规划等等。它的基本意思就是说为XML文档制定一种模式。

Schema相对于DTD的明显好处是XML Schema文档本身也是XML文档,而不是像DTD一样使用自成一体的语法。这就方便了用户和开发者,因为可以使用相同的工具来处理XML Schema和其他XML信息,而不必专门为Schema使用特殊工具。Schema简单易懂,懂得XML语法、规则的人都可以立刻理解它。Schema的概念提出已久,但W3C的标准最近才出来,相应的应用支持尚未完善,但采用Schema已成为XML发展的一个趋势。

首先我们还是从最简单的例子着手来学习Schema的语法结构:

比如一个简单的XML文档如下:

<书本>
<名称>天涯明月刀
<作者>古龙
  

如果用DTD的形式来定义该XML文档结构的话,可以如下所示:

<!ELEMENT 书本 (名称, 作者)>
<!ELEMENT 名称 (#PCDATA)>
<!ELEMENT 作者 (#PCDATA)>

那么用Schema形式如何定义呢?见下面的代码:

<element name='书本' type='书本类型'/>
<complexType name='书本类型'>
<element name='名称' type='string'/>
<element name='作者' type='string'/>
</complexType>

可以注意的一点是,在Schema中,也是通过对元素的定义和元素关系的定义来实现对整个文档性质和内容的定义。同时需要注意的是,在Schema中,元素是通过它的名字和内容模型来确定,名称就是该元素的名字,这个大家都可以理解,而内容模型实际上就是表示元素的类型。就象在C++中,我们可以随便定义一个变量,但是必须定义变量的类型,变量的类型就可能有多种形式,它可以是一个简单的变量(如C++内部指定的类型,bool,int,double,char等等),也可以是很复杂的类型(比如是一个struct或者是class),在Schema中也是一样,类型(type)可以分为两种形式,一种是非常简单的类型,被称为simple,一种是复杂的类型,被称为complex。简单类型不能包含元素和属性(注意在Schema中和DTD中一样,都有元素属性的说法,大道相同)。而复杂类型不仅可以包含属性,而且可以在其中嵌套其他的元素,或者可以和其他元素中的属性相关联。

时间: 2025-01-21 17:28:26

一个简单的XML Schema的例子的相关文章

一个简单的XML Schema的例子_XML/RSS

我们可以看到,DTD的语法相当复杂,并且它不符合XML文件的标准,自成一个体系.也就是说DTD文档本身并不是一个良好形式的XML文档,上面的关于DTD的介绍也仅仅是作了一个简介,目的是帮助大家能读懂DTD文件以及在必要时创建简单的DTD文件,因为现在很多的XML应用是建立在DTD之上的. 另外一个代替DTD的就是W3C定义的Schema,Schema从字面意义上来说,可以翻译成模式.大纲.计划.规划等等.它的基本意思就是说为XML文档制定一种模式. Schema相对于DTD的明显好处

一个简单的XML Schema例子

我们可以看到,DTD的语法相当复杂,并且它不符合XML文件的标准,自成一个体系.也就是说DTD文档本身并不是一个良好形式的XML文档,上面的关于DTD的介绍也仅仅是作了一个简介,目的是帮助大家能读懂DTD文件以及在必要时创建简单的DTD文件,因为现在很多的XML应用是建立在DTD之上的. 另外一个代替DTD的就是W3C定义的Schema,Schema从字面意义上来说,可以翻译成模式.大纲.计划.规划等等.它的基本意思就是说为XML文档制定一种模式. Schema相对于DTD的明显好处是XML

用正则表达式判断一个简单的用户登陆的例子

正则 bd.jsp <%@ page contentType="text/html;charset=gb2312"%> <% //接受表单提交的字符串, /* 数据只能为a-z,A-Z,0-9的字符的正则表达式的例子. 正则表达式在做程序登陆的过程非常重要.不然用´ or ´ 等语句就可以很容易绕过您的程度判断: 作者:高颂 QQ:932246 一个简单的例子但是很有用,希望起到抛砖引玉的作用. */ String temp ="我是非法的字符";

一个简单的XML 服务器

xml|服务器   <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />        在一个没有安装任何XML控制的服务器上就可以生成XML.         在服务器上存储 XML         XML文件可以存储在你的Internet服务器上. XML文件可以存储在你的Internet服务器上,就象其它HTML 文件一样.   打开记事本编辑器,写下面几行:     

AngularJS一个简单的时钟展示实现例子

一个简单的时间显示 <html> <head>  <link href="//cdn.bootcss.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet">     <script src="//cdn.bootcss.com/angular.js/1.3.17/angular.js"></script>     <

一个简单的Spring MVC的例子

一.Spring MVC的优点 1.Spring3 MVC的学习难度小于Struts2,Struts2用不上的多余功能太多.呵呵,当然这不是决定因素. 2.Spring3 MVC很容易就可以写出性能优秀的程序,Struts2要处处小心才可以写出性能优秀的程序(指MVC部分) 3.Spring3 MVC的灵活是你无法想像的,Spring的扩展性有口皆碑,Spring3 MVC当然也不会落后,不会因使用了MVC框架而感到有任何的限制. 二.简单的例子 1.配置web.xml 指除了Control层外

一个ASP.NET+XML留言本例子

viewpost.aspx--察看提交的留言 viewguestbook.aspx--察看所有留言 Header.inc guestpost.aspx--留言表单及XML写操作 Footer.inc Guest.xml--XML数据 源代码如下: viewguestbook.aspx <%@ Import Namespace="System" %> <%@ Import Namespace="System.IO" %> <%@ Impo

一个简单的html5 canvas时钟例子

第一次学习如何使用canvas,感觉用起来还挺顺手,期间查了很多api,也参考了别人的例子,下面就是我成果,希望能帮助到路过的你:  代码如下 复制代码 'use strict'; var clock = {  init: function(){      var _this = this;      _this.load();      setInterval(function(){          _this.load();      },1000)  },  load: function

一个简单的网上书城的例子(一)!

数据库结构:第一个库shopbag.mdb,两个表:buyiformation表存客户信息如下:Name,Tel,Address,ProductID,Quatity,Sum第二个表products存商品信息:CategoryID(商品分类号),productid,productname,descrition,ischeck(用户是否选这一商品),price(单价) 下面试一个工具文件!util.asp <%Sub ListCategory( conn )    Set rs = conn.Exe