站长中国
设为首页 | 站长论坛

站长论坛 站长下载
您所在的位置: 站长中国 > 站长学院 > 网络编程 > XML专区 > 正文

Schema初学者进阶(3)自定义数据类型
  2007年09月14日23:53:32  评论(1条) 字体:[ ]
相关热点: 类型 定义 学者 name 元素 xsd:simpleType xsd:restriction

 

 

我们已经看过我们用层层嵌套式和非层次式两种方法定义元素和元素属性的方法。W3C XML Schema还有第三种设计方法--自定义数据类型,自定义数据类型可以定义我们自己需要的数据类型,它既可以是PCDATA一样的简单类型,也可以是含有多个元素的复杂类型。

simpleTypecomplexType元素中给出自定义数据类型的名字,然后定义子元素或者属性。下面我们将展现如何定义一个长度受限的字符串类型。

例如:假如我们要定义一个名为"nameType",最大长度为32个字符的数据类型。我们可以这样写:

<xsd:simpleType name="nameType">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="32"/>
</xsd:restriction>
</xsd:simpleType>

simpleType元素中定义新的元素的名字,而restriction元素表示这个元素是来源于W3C XMLSchema名域中的"string"类型,并且对这个字符串应用了约束,例如:可以限制该元素能使用的数值。maxLength元素,称之为"facet",它说明这个自定义数据类型的约束条件是字符串最大长度不超过32。

另外非常有用的facet是"pattern"元素,它定义一个必须要被匹配的规则表达式。例如:如果不介意"-"标记,我们可以下面一样定义一个10个数字ISBN类型:

<xsd:simpleType name="isbnType">
<xsd:restriction base="xsd:string">
<xsd:pattern value="[0-9]{10}"/>
</xsd:restriction>
</xsd:simpleType>

Facets有两种方法取得一个数据类型(列表和结合体), 我们将在下面的章节讨论更深层的内容。

Complex自定义数据类型同我们已经看过simpleType的一样,首先给了元素名字。

定义使用数据类型和定义类并使用类建立对象是非常相似的。自定义数据类型用于定义元素或者属性的抽象概念。它所扮演的角色同类在对象扮演的角色相同。

下面是完整的实例:

<?xml version="1.0" encoding="utf-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2000/10/XMLSchema">
<!-- definition of simple types -->
<xsd:simpleType name="nameType">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="32"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="sinceType">
<xsd:restriction base="xsd:date"/>
</xsd:simpleType>
<xsd:simpleType name="descType">
<xsd:restriction base="xsd:string"/>
</xsd:simpleType>
<xsd:simpleType name="isbnType">
<xsd:restriction base="xsd:string">
<xsd:pattern value="[0-9]{10}"/>
</xsd:restriction>
</xsd:simpleType>
<!-- definition of complex types -->
<xsd:complexType name="characterType">
<xsd:sequence>
<xsd:element name="name" type="nameType"/>
<xsd:element name="friend-of" type="nameType" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="since" type="sinceType"/>
<xsd:element name="qualification" type="descType"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="bookType">
<xsd:sequence>
<xsd:element name="title" type="nameType"/>
<xsd:element name="author" type="nameType"/>
<!-- the definition of the "character" element is using the "characterType" complex type -->
<xsd:element name="character" type="characterType" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="isbn" type="isbnType" use="required"/>
</xsd:complexType>
<!-- Reference to "bookType" to define the "book" element -->
<xsd:element name="book" type="bookType"/>
</xsd:schema>


 


责任编辑:

收藏本文 打印 打印本文  推荐本文 告诉好友 投稿 投稿邮箱

站长排行

学院

新闻

专栏

盈利

[揭密网络黄链]中国留学生买凶专破日本
JSP语法(6)
超强弹出窗口代码,什么都挡不住
FLASH视觉特效实例之地震效果
贴吧发帖机使用教程(绝对原创)
关于数据分页(转自www.codeproject.co
ASP实现文件直接下载
Photoshop制作光感超酷效果水晶球
 遍历ASP.NET页面控件
永远的后门[经典]+查不出的后门
淘宝网卖家公然叫卖“艳照门”照片集
驳《百度Hi面世对腾讯有利》
Google绿色专家质疑黑色背景网页节省资
国内各IT企业办公环境揭秘(多图)
阿里妈妈广告卖主全攻略
站长创业源动力 主流站长站赏析
推荐阅读:80年小子的创业道理
Discuz!6.0猛将出击 最强论坛程序酷炫
我的网络,我的团队:专访李文明
百度新闻频道改版十天 流量止跌反弹翻
ECSHOP模板制作参考文档
悬挂阿里妈妈会否被百度惩罚
阿里妈妈是否是中小站长的救世主?
最强网店ECShop发新版 众多酷炫功能给
ECSHOP模板下载
土豆网,优酷网,爆米花等视频网站采集
DedeCms模板安装/制作概述
网上商店系统巅峰对决 ECShop vs ShopE
艰难的走在创业的路上 第一天
编程中国全站采集规则
性福联盟 一个不尊重站长的联盟
大脚:日赚100元—揭露最新firefox欺骗
大脚:垃圾站超级赚钱法之二—突破“站
大脚:垃圾站超级赚钱法之——前言
迅雷联盟、快车联盟收入对比
经理人必看的十个管理网站
Google Adsense的秘密 第二版
西联汇款兑付城市查询
不用SEO取得成功的10个步骤
关于做GOOGLE的五条经验
站长学院  网页设计 建站教程 图形图象 网络编程

Photoshop CS3
Photoshop CS3
不用Photoshop
不用Photoshop

DIV+CSS的开发方式 听听另外的
虚拟主机建站动易里快速生成的
VBScript特效代码 满屏幕乱跑
牛气!一个菜鸟站长的超强网站
创建、维护一个个人博客的“投
让网站流量稳步飙升的秘籍
网站推广的基本思想

新闻线索

如果你有站长界人事变动、重组并购、变革技术出现,以及产品投诉等重要新闻线索,请告诉我们,我们会给予特别关注。
0631-3653338
站长中国编辑部
站长中国24小时新闻热线: 13256307008