|
技术文库首页
|
编程
|
IC
|
晶体管
|
精解
|
中频
|
其它
|
电源
|
基础
|
电脑
|
无线
|
液晶
|
微波
|
空调
|
手机
|
|
热水器
|
电动车
|
LED屏
|
焊机
|
您现在的位置: 华玉生活网 >> 技术文库 >> 基础 >> 正文>> 繁體中文

Schema

Schema

Schema简介
本章我们将用XML Schema文件对学生信息的XML文档进行约束,并加入老师的信息。实现了如下的功能:
  对每个“学生”元素都用一个编号属性唯一标识。且编号的值要类似“B001”,即第一个字符为大写字母,后面跟三个数字。约束“电子邮箱”为“ewsd@163.com”的形式。“老师”元素用一个编号属性唯一标识。且编号的值要类似“GB001”。
 Schema文件的部分内容如下:


 

对“年龄”元素和“身高”元素的值进行限制。即年龄必须是在26到18岁之间。身高必须在140.0cm到190.0cm之间。 代码如下:
<xs:simpleType name="age">
 <xs:restriction base="xs:int">
  <xs:maxExclusive value="26"></xs:maxExclusive>
  <xs:minExclusive value="18"></xs:minExclusive>
 </xs:restriction>
</xs:simpleType>
<xs:simpleType name="length">
 <xs:restriction base="xs:float">
  <xs:maxExclusive value="190.0"></xs:maxExclusive>
  <xs:minExclusive value="140.0"></xs:minExclusive>
 </xs:restriction>
</xs:simpleType>

Schema的诞生
XML在某些特殊的应用场合,对数据本身、数据的类型以及数据之间的联系都有一定的限制。这种限制不是由XML语法来规定的,而是在特殊的环境中所必须的一种限制。我们需要把这种限制用另外的方式表达出来,然后告诉用户和计算机。

Schema作为一种新的思想诞生了,Schema通常是一组为了描述某一类XML文档而定义好的一套规则。XML Schema与DTD一样,也是对某一类XML文档进行约束并确定其结构,包括对元素、属性、及数据类型的完整定义,及某个XML文档中所使用的元素、实体、元素的属性、元素与实体之间的关系的特殊约束。XML Schema最初是由微软提出并使用,后来在W3C的专家们充分讨论和论证的基础上,于1999年2月15日,W3C发布了一个需求定义,说明了新定义的Schema必须符合的要求。1999年5月6日,W3C完成并发布了Schema的定义。最终被确定成为一个标准。

Schema的优势
XML Schema文件使用XML语法,在其设计目的方面与DTD类似,但是在功能方面,XML Schema比DTD更完善,并且更容易扩展。相比DTD主要优势有以下几点:

 (1)一个XML Schema文件同时也是一个XML文档,

 (2)Schema定义了多种数据类型。在XML Schema文件中可以像在其他编程语言那样来定义数据类型,如整型、字符型、浮点型、布尔型、日期型等。

Schema的建立和使用

建立有效的Schema文件

 一个有效的Schema文件的结构如下:
<?xml version="1.0" encoding="UTF-8"?>
 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
 elementFormDefault="qualified" attributeFormDefault="unqualified">
  <!-- 这里编写内容 -->
 </xs:schema>

使用Xmlspy工具书写Schema
首先启动Xmlspy 2006企业版,然后点击菜单栏中的“文件”“新建”菜单项,打开“创建新文档”对话框,选择“xsd XML Schema file”文档类型,如下图:

点击“确定”按钮,进入文档编辑区,如下图:

内容编辑完成后,点击如图所示的工具栏中带黄色对勾()的按钮验证文件格式,如果格式良好,将显示带黄色对勾()的标记;反之,将显示带红色叉(X)的标记。点击图3-2所示的工具栏中带绿色对勾()的按钮验证文件有效性,如果文件有效,将显示带绿色对勾()的标记;反之,将显示带红色叉(X)的标记。

Schema简单类型元素

Schema类型的元素是Schema文件的根元素,每个Schema文件必须包含Schema类型的元素。Schema类型元素的属性有以下几种:

简单类型元素主要有: simpleType类型元素  element类型元素 attribute类型元素 enumeration类型元素 pattern类型元素 union类型元素 list类型元素

 simpleType类型元素
 simpleType类型用于定义一个简单类型的元素。

 simpleType类型的属性有“final”、“id”和“name”。“final”属性指出派生的类型,防止该simpleType元素的指定派生类型,该值可以包含一个列表,该列表是list、union或restriction元素的子集。如下:
<xs:simpleType>        <xs:restriction base="xs:positiveInteger">
  <!--  限制取值范围 -->      <xs:maxExclusive value="100"/>
 </xs:restriction>
</xs:simpleType>
xs:restriction :限制基类型元素

element类型元素
element用于定义一个普通的元素。一般格式如下:
<element name="name" type="string"></element>
<element name="age" type="int"></element>
<element name="address" type="string"></element>
element元素的属性有name、abstract、block、default、final、fixed、id、nillable、maxOccurs、minOccurs、substitutionGroup和type

name属性的值是该element元素的元素名。
type属性的值是该element元素的数据类型
ref属性的值必须指向一个全局元素。
maxOccurs属性的值是元素在其父元素中出现的最大次数,它的取值为大于0或等于0的数,在默认状态下为unbounded
minOccurs属性的值是元素在其父元素中出现的最小次数,它的取值为大于0或等于0的数,在默认状态下为1

attribute类型元素
attribute用于声明一个属性元素。如:
<?xml version="1.0" encoding="UTF-8"?>
 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
 elementFormDefault="qualified"
 attributeFormDefault="unqualified">
  <xs:attribute name="a"></xs:attribute>
 </xs:schema>
attribute主要有name、default、fixed、id、 ref、type、use几种属性
(1)Default:指该attribute类型元素的名称具有默认值;
(2)fixed:指该attribute类型元素的名称具有固定的值 ;
(3)use:指示如何使用该attribute类型元素。use属性的值必须是“optional”、“prohibited”、“required”中的一种。“optional”表示该属性可以是任何值,并且该属性是可选的;“prohibited”表示不能使用该属性;“required”表示该属性必须出现一次。在默认状态下use的值是“optional”。

enumeration类型元素
enumeration类型用于显示某个元素或属性的枚举。enumeration类型元素的属性有“id”和“value”,id属性标识该值在枚举列表中的位置,value表示该enumeration类型元素的值。如下:
<?xml version="1.0" encoding="UTF-8"?>
 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
 elementFormDefault="qualified" attributeFormDefault="unqualified">
    <xs:attribute name="address">
     <xs:simpleType>
    <xs:restriction base="xs:string">
     <xs:enumeration value="北京"/>
     <xs:enumeration value="上海"/>
    </xs:restriction>   
     </xs:simpleType>
    </xs:attribute>
 </xs:schema>

pattern类型元素
pattern类型主要用于对某个属性或元素的值进行约束,pattern类型的属性有“id”和“value”。“value”属性的值是被约束元素或属性的值的形式。如下:
<?xml version="1.0" encoding="UTF-8"?>
 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
 elementFormDefault="qualified" attributeFormDefault="unqualified">
  <xs:element name="id" type="mytype">
  </xs:element>
  <xs:simpleType name="mytype">
   <xs:restriction base="xs:string">
    <xs:pattern value="\d{3}-[A-Z]{2}"/>
   </xs:restriction>
  </xs:simpleType>
 </xs:schema>

union和list类型元素
list类型定义单个simpleType类型元素,而union类型定义多个simpleType类型元素。
list类型有“id”和“itemType”属性。

“itemType”属性是指在该元素中定义的内置数据类型或 simpleType元素的名称。包含list元素的simpleType元素是从“itemType”值指定的简单类型派生的。list值必须是限定名。对simpleType元素子级和“itemType”属性的使用是互相排斥的。

union类型有“id”和“memberTypes”属性。

“memberTypes”属性是指在该元素中定义的内置数据类型或simpleType元素的名称列表。包含union元素的simpleType元素是从“memberTypes”值指定的简单类型派生的。

<?xml version="1.0" encoding="UTF-8"?>
 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
 elementFormDefault="qualified" attributeFormDefault="unqualified">
  <xs:attribute name="id">
   <xs:simpleType>
    <xs:union memberTypes="first second" />
   </xs:simpleType>
  </xs:attribute> 
  <!--  第一个simpleType  --> 
  <xs:simpleType name="first">
   <xs:list itemType="second"></xs:list>
  </xs:simpleType>
  <!--  第二个simpleType  -->
  <xs:simpleType name="second">
   <xs:restriction base="xs:string">
    <xs:enumeration value="b001"/>
    <xs:enumeration value="b002"/>
   </xs:restriction>
  </xs:simpleType>
 </xs:schema>


Schema复杂类型元素

复杂类型是可以包含其他元素、属性和组的元素定义。 主要有以下几种:
sequence类型元素
complexType类型元素
choice类型元素
simpleContent类型元素
extension和restriction类型元素
group类型元素
attributeGroup类型元素


Schema的数据类型

简单数据类型
Schema定义了多种内置数据类型。我们在编写Schema文件时可以直接使用他们。内置数据类型又分为基本数据类型和派生数据类型。如下表所示:
简单数据类型
Schema定义了多种内置数据类型。我们在编写Schema文件时可以直接使用他们。内置数据类型又分为基本数据类型和派生数据类型。如下表所示:
string 表示字符串
boolean 表示布尔值
decimal 表示任意精度数字
float 表示单精度32位浮点数字
double 表示双精度64位浮点数字
duration 表示持续时间。duration的模式为PnYnMnDTnHnMnS
dateTime 表示时间的特定实例。模式是CCYY-MM-DDThh:mm:ss
time 表示每天重复的时间的实例,模式为hh:mm:ss.sss
date 表示日历日期。模式为CCYY-MM-DD
gYearMonth 表示特定公历年中的特定公历月
gYear 表示公历年
gDay 表示重复的公历日
gM onth 表示每年重复的公历月
hexBinary 表示任意十六进制编码的二进制数据
base64Binary 表示Base64编码的任意二进制数据
anyURI 表示按RFC 2396定义的URI
QName 表示限定名
NOTATION 表示NOTATION属性类型,QNames的集合

派生数据类型
由基本数据类型派生出来的数据类型有如下几种:
 ID:用于唯一标识元素
 IDREF:IDREF类型的含义和使用与DTD中的类似。
 IDREFS:IDREFS类型的含义和使用与DTD中的类似。
 ENTITY:实体类型,与DTD中的类似。
 ENTITIES:ENTITIES类型的含义和使用与DTD中的类似。
 NMTOKEN:NMTOKEN类型,与DTD中的类似。
 NMTOKENS:NMTOKENS类型集,与DTD中的类似。
 long:表示长整型数大小在-9223372036854775808和9223372036854775807之间
 int:表示整型数,大小在-2147483648和2147483647之间。
 short:表示短整型数,大小在-32768和32767之间。
 byte:表示整型数,大小在-128和127之间。
数据类型的属性
每种数据类型都有不同的属性,数据类型的属性主要包括以下几种:
 enumeration:在指定的数据项中选择,限定用户的选值。
 fractionDigits:限定最大的小数位,用于控制精度。
 length:指定数据的长度。
 maxExclusive:指定数据的最大值,不包含该最大值。
 maxInclusive:指定数据的最大值,包含该最大值。
 maxLength:指定长度的最大值,长度单位取决于数据类型。
 minExclusive:指定最小值,不包含该最小值。该值的数据类型必须与继承的数据类型相同。
 minInclusive:指定最小值,包含该最小值。
 minLength:指定最小长度。
 pattern:指定数据的显示规范。
用户自定义数据类型
用户在对数据类型进行自定义时,主要是通过simpleType定义,并通过simpleType元素的name属性值作为该自定义数据类型的名称。如下:
<?xml version="1.0" encoding="UTF-8"?>
 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
 elementFormDefault="qualified" attributeFormDefault="unqualified">
  <!-- 自定义类型mytype -->
  <xs:simpleType name="mytype">
   <xs:restriction base="xs:string">
    <xs:enumeration value="男"></xs:enumeration>
    <xs:enumeration value="女"></xs:enumeration>
   </xs:restriction>
  </xs:simpleType>
  <!--  使用自定义类型mytype -->
  <xs:element name="name" type="mytype"/>
 </xs:schema>
复杂数据类型
复杂数据类型的定义主要是通过complexType定义。并通过complexType元素的name属性值作为该自定义数据类型的名称。如下:
<?xml version="1.0" encoding="UTF-8"?>
 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
 elementFormDefault="qualified" attributeFormDefault="unqualified">
  <xs:element name="student"> 
   <xs:complexType>
    <xs:sequence>
       <xs:element name="address" type="mytype" >
     </xs:element>
    </xs:sequence>
   </xs:complexType>
  </xs:element>
  <!--  用complexType定义一个复杂数据类型mytype-->
  <xs:complexType name="mytype">
   <xs:sequence>
    <xs:element name="北京" type="xs:string"/>
    <xs:element name="上海" type="xs:string"/>
   </xs:sequence>
  </xs:complexType>
 </xs:schema>
用Schema约束XML文档
使用schema合理控制元素之间的关系

元素与元素之间存在着父子关系、包含关系、继承关系等,我们可以通过Schema中定义的各种类型元素来描述元素之间的关系。例如我们可以用complexType和sequence类型来描述父子关系、包含关系,用group类型来描述兄弟关系等。如下:
<!-- “Items”和“item”元素之间存在父子关系 -->
 <xs:complexType name="Items">
  <xs:sequence>
   <xs:element name="item" minOccurs="0"
   maxOccurs="unbounded">
   <!--“item”和“productName”元素之间存在父子关系-->
    <xs:complexType>
     <xs:sequence>
     <xs:element name="productName" type="xs:string"/>
     </xs:sequence>
    </xs:complexType>
   </xs:element>
  </xs:sequence>
 </xs:complexType>
使用schema文件对XML文档约束
在XML文档中使用已经编写好的schema文件的一般格式如下:
<class xmlns="http://tempuri.org/po.xsd"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLocation="http://tempuri.org/po.xsd test.xsd">
</class>
“class”表示根元素,其中xmlns:xsi是在文档中声明“XML 模式实例”名称空间,以授予对引用XML模式时需要的属性的访问权。当然,要添加前缀映射(xsi)和相关URL。xmlns是为所有没有前缀的元素提供缺省命名空间。
同时我们可以通过设置schemaLocation属性的值,让该文档应用多个schema文件。schemaLocation 属性如下:
<xsi:schemaLocation="http://tempuri.org/po.xsd D:\XML\Schema\test1.xsd
D:\XML\Schema\test2.xsd">
实践项目——<编写班级信息XML文档的XML Schema文件 >
程序的实现要求如下:
(1)使用Schema的内置数据类型和自定义数据类型来约束元素或属性的值。
(2)使用Schema简单类型元素和复杂类型元素来定义元素,以及描述个元素之间的关系。


瑞达币购买
桂山秋竹_唐年桂2023年
桂北云雾图_唐年桂202

  • 扩展阅读
  • 上一个文章:
  • 【返回网站首页】 【返回基础】
  • 下一个文章:
  • 【字体: 】【】【发表评论】【加入收藏】【告诉好友】【打印此文
    文章 软件 电影 商品

    相关文章

    本站公告

    • 扫一扫,打赏给我们,谢谢!

      本站2016年12月16日起取消ruida.org.cn域名,该域名正式作废,该域名发布任何信息与本站无关。


      启用ruida.orghy928.net域名;

      瑞达网,瑞达科技网宣

    附页内镶内容
    健康养生 商场新品 股市K线、指标知识
     六种药酒配制法[11月7日]
     玉容散·主治妇女面无光彩,[4月23日]
     玉容散·功效祛风止痒,化斑[4月23日]
     玉容散·功效祛风利湿,消斑[4月23日]
     玉容散·功效馨香,去垢腻,主[4月23日]
     玉容散·主治黧黑皯黯(又名黧[4月23日]
     玉容散·功效白面嫩肌,主治黧[4月23日]
     玉容散·主治面上诸(黑干)(黑[4月23日]
     玉容散·主治润颜色[4月23日]
     七子白粉_美白、祛斑、去痘、[4月23日]
     瑞达币购买
     桂山秋竹_唐年桂2023年新作品
     桂北云雾图_唐年桂2023年新作品
     广西2019年《高考指南》+《招生计
     金士科前置过滤器
     金牛前置过滤器
     USB口24系列编程器第二版含USB延
     液晶电视、液晶显示器图纸、维修
     彩电、显示器、DVD、EVD打印机等
     高清CRT彩电、显示器图纸刻录 4G
     [理财]各种短视频赚钱方法
     [会员]专业交易实战控制系统
     [理财]1分2分5分硬币回收价格表(20250123)
     [理财]1分2分5分硬币回收价格表(20230928)
     [理财]1分2分5分硬币回收价格表(20230624)
     [理财]2022 年新版1分2分5分硬币回收价格表…
     [理财]微信收款码如何开通商业版收信用卡费…
     [指标]R平方_基金指标
     [指标]标准差_基金指标
     [指标]平均回报_基金指标
    装修案例 网站建设 电器维修
     一般水电安装几个常用尺寸[1月29日]
     三相电表接法及度数的正确读…[5月8日]
     万能通用卧室房门锁更换步骤…[2月22日]
     乳胶漆的八大施工步骤及涂刷…[2月14日]
     旧墙翻新步骤及注意事项[2月14日]
     屋面防水施工工艺流程及注意…[1月16日]
     专利产品“防污吸气帽”新产…[1月8日]
     鲁班尺吉数对照表高清图片查…[10月29日]
     砂浆胶作用与危害[9月21日]
     4种处理水泥地面起砂方法[9月21日]
     网页html点击切换显示内容完[11月7日]
     动易SiteWeaver6.6网站管理系[7月31日]
     中国阴历农历JS支持 HTML网页[2月26日]
     java script error 容错处理[2月15日]
     几款还不错的网页特效显示日[2月14日]
     图片可以调大小的代码[12月14日]
     动易SW6.8网站系统改自适应支[11月20日]
     网站建设_套餐服务[12月4日]
     网站建设-费用明细[12月4日]
     不显示出来的代码[12月3日]
     联想 小新Air 14 2019笔记本…[6月15日]
     滚筒洗衣机脱水声音大原因及…[4月17日]
     智能电视不能开机强制恢复出…[1月16日]
     各大品牌智能电视机恢复出厂…[1月16日]
     洗衣机自己排水或不存水漏水…[6月15日]
     海尔冰箱出现-03还滴滴报警[5月29日]
     TCL电视通用教程安装教程[2月2日]
     TCL L43V7300A-3D液晶彩电出…[2月2日]
     先锋液晶电视LED-32B550无光…[1月17日]
     智能电视主板的应用与维修(…[1月11日]
    电器资料 下载 读书
     手机恢复出厂设置具体操作方…[3月29日]
     三个代码让电脑提速畅通秘籍[3月13日]
     视得安750D6对讲门铃工作原理…[9月13日]
     什么是量子芯片和光子芯片[5月14日]
     沃尔沃S90汽车遥控钥匙失灵的…[1月19日]
     LED显示屏瑞合信PLus单双色全…[12月22日]
     Windows 照片查看器无法显示…[8月6日]
     已经设置IE主页,但是打开还…[7月6日]
     如何调整空压机压力?空压机…[6月8日]
     剪映-视频编辑软件手机版使用…[5月28日]
     [书籍]幼学琼林全文
     [书籍]滕王阁序_原文_注释译文_白
     [书籍]《天工开物》明代宋应星初
     [电影]《抓娃娃》高清电影
     [联想]Lenovo S540-14API Compl 
     [书籍]《墨子》原文注释译文
     [LED条屏]瑞合信单双色/全彩控制系统
     [LED条屏]LED显示屏瑞合信手机APP6.
     [书籍]全本新注聊斋志异
     [书籍]广西2023年高考指南 招生计
     黄历干支年号公元皇帝对照年[4月17日]
     广西高考2024~2022年历史类([6月25日]
     花木[4月16日]
     鸟兽[4月16日]
     释道鬼神[4月16日]
     讼狱[4月16日]
     技艺[4月16日]
     制作[4月16日]
     科第[4月16日]
     文事[4月16日]
    珠宝玉器 在线电视台
     鸡血石与鸡血玉有什么区别[6月12日]
     鸡血玉[6月12日]
     鸡血石 (bloodstone)[6月12日]
     什么是莫桑石(Moissanite)[6月12日]
     可以戴钻石洗澡吗[1月22日]
     钻石如何保养才好呢?[1月22日]
     PT容易花的问题和钻戒保养问…[1月22日]
     切工 钻石的雕刻艺术[1月22日]
     如何保养好钻戒[1月22日]
     钻戒保养方法[1月22日]
     中央体育台
     中央新闻台
     宁夏卫视
     湖北卫视
     西藏卫视
     辽宁卫视
     河北卫视
     北京卫视
     政法频道
     农民频道
     湖南经视
     湖 南 台
     河南频道
     湖南卫视
     兵团卫视
     江苏卫视
     旅游卫视
     湖南都市
     七彩戏剧
     动漫秀场
     游戏风云
     法制天地
     魅力音乐
     新 娱 乐
     南 方 TV
     浙江卫视
     齐鲁频道
     山西影视
     东南卫视
     上海卫视
     贵州电视台
     重庆电视台
     山东卫视
     哪吒之魔童闹海《哪吒2》在线
     《抓娃娃》在线电影
     流浪地球2剧情介绍
     《万里归途》完整版
     《阿凡达2:水之道》耗资3.1
     2021港剧《梅艳芳》5集全.HD
     误杀2 -电影-完整版视频在线
     亲爱的/亲爱的小孩/打拐/家之
     《第一炉香》-电影-完整版视
     《扬名立万》-电影-完整版视
    网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
        没有任何评论

    | 服务声明 | 充值中心| 华安五金电器 | 收费标准| 论坛| 留言| 实用查询| 会员中心| 下载帮助| 设为首页|

    技术支持:瑞达科技 即时交谈QQ:237013889 QQ群:13810759 E-Mail:237013889@qq.com
    非盈利网站,如有侵权,请来信来电告知,第一时间处理,谢谢!
    桂ICP备17008104号 华玉生活网网站统计
    tj