_实验三:XML schema语法练习

合集下载

XMLSchema的基本语法(转)

XMLSchema的基本语法(转)

XMLSchema的基本语法(转)XSDL(XML Schema定义语⾔)由元素、属性、命名空间和XML⽂档种的其他节点构成的。

⼀、XSD中的元素XSD⽂档⾄少要包含:schema根元素和XML模式命名空间的定义、元素定义。

1、schema根元素语法如下:…</xsd:schema>在XSD中必须定义⼀个且只能定义⼀个schema根元素。

根元素中包括模式的约束、XML模式命名空间的定义,其他命名空间的定义、版本信息、语⾔信息和其他⼀些属性。

2、元素语法如下:<xsd:element name=”user” type=”xsd:string” />XSD中的元素是利⽤element标识符来声明的。

其中name属性是元素的名字,type属性是元素值的类型,在这⾥可以是XML Schema中内置的数据类型或其他类型。

例⼦:<xsd:element name=”user” type=”xsd:string” /></xsd:schema>以上⽂档对应的有效XML⽂档如下:<?xml version=”1.0”?><user>string</user>在元素的定义中还有2个属性:minOccurs和maxOccurs。

其中minOccurs定义了该元素在⽗元素中出现的最少次数(默认为1,值为⼤于等于0的整数),maxOccurs定义了该元素在⽗元素中出现的最多次数(默认为1,值为⼤于等于0的整数)。

在maxOccurs中可以把值设置为unbounded,表⽰对元素出现的最多次数没有限制。

例⼦:<xsd:element name=”user” type=”xsd:string” minOccurs=”0” maxOccurs=”unbounded” /></xsd:schema>表⽰为元素user的类型为string,出现的次数最少为0(也就是可选),最多不限制。

2012下《XML及其应用》教学日历-09(2)

2012下《XML及其应用》教学日历-09(2)
XML技术背景及其发展
胡芳

3-4
XMLSPY编辑器使用
胡芳

3-4
XML文档结构、基本语法
胡芳
2

1-2
XML文档练习
胡芳

3-4
基本语法、创建格式良好的XML文档
胡芳

3-4
实验一:XML文件的编辑
胡芳
3

1-2
DTD概述、元素声明、实体声明
胡芳

3-4
DTD练习
胡芳

3-4
DTD中的属性、标记声明
胡芳
4

1-2
实验二:DTD实验
胡芳

3-4
XML命名空间、XML Schema、数据类型
胡芳

3-4
XML Schema练习
胡芳
5

1-2
元素声明、属性声明
胡芳

3-4
实验三:XML Schema实验
胡芳

3-4
使用CSS显示XML
胡芳
6

1-2
实验四:CSS显示XML
胡芳

3-4
使用XSL显示XML
湖北中医学院教学日历
2012至2013学年,第1学期
医学信息工程专业(方向)09级2班课程名称:XML及其应用
总学时:60(理论:36实验:24)采用何种教材:XML实用技术教程,清华大学出版社,顾兵,2007年1月
听课人数:47实习组数每组人数
周次
星期
节次
讲课
实验实习
内容
教师
内容
教师
备注

实验3 在XML文档中使用Schema

实验3  在XML文档中使用Schema

实验3 在XML文档中使用Schema【开发语言及实现平台或实验环境】配置有windows记事本、写字板或XMLSpy 2006开发环境的计算机设备【实验目的】(1)通过本实验,使学生能够了解并掌握XML Schema的定义方法及其用途(2)了解并掌握Schema的基本结构(3)了解并掌握Schema的数据类型(4)了解并掌握Schema的元素声明(5)了解并掌握Schema的属性声明(6)了解并掌握XMLSpy中基于Schema的XML文件输入【实验要求】(1)能参照示例XML文件进行对应的XML Schema定义(2)能利用Schema对XML文件进行验证【实验原理】一 XML DTD是对XML结构进行定义的另一种机制二XML DTD本身符合XML语法【实验步骤】<?xml version="1.0" encoding="UTF-8"?><!--W3C Schema generated by XMLSpy v2007 ()--><xs:schema xmlns:xs="/2001/XMLSchema"> <xs:annotation><xs:documentation>JinYanZhong XML File Schema Test</xs:documentation></xs:annotation>[]</xs:schema>(3)定义bookcaseType类型(添加在[]处)<xs:element name="bookcase" type="bookcaseType"/><xs:attribute name="type"><xs:simpleType><xs:restriction base="xs:string"><xs:enumeration value="科技"/><xs:enumeration value="教育"/></xs:restriction></xs:simpleType></xs:attribute>(4)定义bookcase元素(紧随bookcaseType类型定义之后)<xs:complexType name="bookcaseType"><xs:sequence><xs:element name="book" type="bookType"/></xs:sequence></xs:complexType>(5)定义bookType元素类型(里面引用定义authorType, pub-houseType)<xs:complexType name="bookType"><xs:sequence><xs:element name="b-name" type="xs:string"/><xs:element name="author" type="authorType"/><xs:element name="price" type="xs:string"/><xs:element name="publishing-house" type="pub-houseType"/> </xs:sequence></xs:complexType>(6)定义authorType及pub-houseType元素类型<xs:complexType name="authorType"><xs:sequence><xs:element name="name" type="xs:string"/><xs:element name="E-mail" type="xs:string"/></xs:sequence></xs:complexType><xs:complexType name="pub-houseType"><xs:sequence><xs:element name="p-name" type="xs:string"/><xs:element name="address" type="xs:string"/><xs:element name="zipcode" type="xs:string"/><xs:element name="E-mail" type="xs:string"/></xs:sequence></xs:complexType>(7)在XMLSpy中新创建一个基于“个人信息.xsd”的XML文件,体会该方法的方便快捷(8)在IE中打开带有Schema定义的“个人信息.xsd”,观察符合DTD定义及不符合Schema定义的XML文件显示(带Schema定义的XML文件头部如下所示)。

实验三基于XML-Schema实现XML文档的有效性验证

实验三基于XML-Schema实现XML文档的有效性验证

淮海工学院计算机工程学院实验报告书课程名:《 XML开发技术》题目:实验三基于XML Schema实现XML文档的有效性验证班级:姓名:学号:一.实验目的(1)掌握XML Schema的文档结构和语法规则,学会定义simpleType、complexType数据类型,并能利用这些数据类型定义元素;(2)掌握XML Schema和XML文档关联的方法;(3)理解利用XML Schema对XML文档进行有效性验证的原理。

二.实验内容(1)编写良构的XML文档stuInfo.xml/teachInfo.xml,来描述学生/教师的信息。

(2)编写Schema文档stuSchema.xsd/teachSchema.xsd,来约束stuInfo.xml/teachInfo.xml的结构三.实验步骤(1)在网络没有联通的情况下,打开XMLSPY2008环境;(2)编写Schema文档;(3)编写XML文档,并将其关联于已经编写好的Schema文档;(4)验证XML文档的良构性(Well-formed)和有效性(Validation)四.实验结果通过代码和运行界面来反映实验结果1.先新建一个xsd的文件命名为stuSchema<?xml version="1.0" encoding="UTF-8"?><xs:schema xmlns:xs="/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified"> <xs:element name="students" type="studentsType"/><xs:complexType name="studentsType"><xs:sequence><xs:element name="student" type="studentType"maxOccurs="40"/></xs:sequence></xs:complexType><xs:complexType name="studentType"><xs:sequence><xs:element name="sno" type="xs:string"/><xs:element name="sname" type="xs:string"/><xs:element name="sclass" type="xs:string"/><xs:element name="birthday" type="xs:date"/></xs:sequence><xs:attribute name="sex" type="xs:string"/><xs:attribute name="email" type="xs:string"/><xs:attribute name="cellphone" type="xs:string"/> </xs:complexType></xs:schema>2.再建一个xml,命名为stuSchema<?xml version="1.0" encoding="UTF-8"?><students xmlns:xsi="/2001/XMLSchema-instance"xsi:noNamespaceSchemaLocation="stuSchema.xsd"><student sex="男" email="zhangsan@" cellphone="1324132553"> <sno>1001</sno><sname>张三</sname><sclass>软件091</sclass><birthday>1991-07-03</birthday></student><student sex="女" email="lisi@" cellphone="13241wrr32553"> <sno>1004 </sno><sname>李四</sname><sclass>软件092</sclass><birthday>1992-03-03</birthday></student><student sex="女" email="wangwu@" cellphone="13241wrr32553"> <sno>1003 </sno><sname>王五</sname><sclass>软件091</sclass><birthday>1992-03-03</birthday></student></students>这是xsd的一种表格的显示方式,如下图现在验证XML文档的良构性(Well-formed)把软件092下的日期1992-03-03改成1992-03-32发现其良构性没什么问题我们再检查一下其有效性(Validation)发现有效性是有误的因为日期不可能有32号出现诸如此类的毛病再列举一二观察图中蓝色部分这些良构性都没问题,有效性都有欠缺。

实验三 使用模式文档定义XML-网上订单

实验三 使用模式文档定义XML-网上订单

实验3 使用模式文档定义--网上订单一、实验目的:1.掌握XML模式文档的基本语法2.学会使用模式描述数据二、实验内容和步骤:编写XML Schema文档替换实验2中网上订单DTD文档,并验证订单XML文档。

(1)订货时间和发货时间用日期时间型。

(2)订单号用11位数字字符型,使用正则表达式定义。

(3)“书名”一列中的“图书编号”使用ID类型的属性描述。

(4)定购数量用整型。

(5)所有的价格用实型,并精确到小数点后的两位。

(6)付款方式、发货方式、发货状态用枚举类型。

(7)其余元素用字符串类型。

三、实验分析:【程序】:<?xml version="1.0" encoding="UTF-8"?><xs:schema xmlns:xs=/2001/XMLSchema elementFormDefault="qualified" attributeFormDefault="unqualified"><xs:simpleType name="priceType"><xs:restriction base="xs:decimal"><xs:fractionDigits value="2"/></xs:restriction></xs:simpleType><xs:element name="基本信息"><xs:complexType><xs:sequence><xs:element name="姓名" type="xs:string"/><xs:element name="时间" type="xs:date"/><xs:element name="emial" type="xs:string"/><xs:element name="地址" type="xs:string"/><xs:element name="邮编" type="xs:string"/><xs:element name="支付方式" type="xs:paidStyle "/><xs:simpleType name="paidStyle"><xs:restriction base="xs:string"><xs:enumeration value="现金支付"/><xs:enumeration value="信用卡"/><xs:enumeration value="积分支付"/></xs:restriction></xs:simpleType><xs:element name="缺货处理" type="xs:string"/><xs:element name="包装" type="xs:string"/><xs:element name="余额处理" type="xs:string"/><xs:element name="邮发日期" type="xs:string"/><xs:element name="固定电话" type="xs:string"/><xs:element name="手机" type="xs:string"/><xs:element name="发票单位" type="xs:string"/><xs:element name="发货单位" type="xs:string"/></xs:sequence><xs:attribute name="订单号" use="required"/><xs:simpleType><xs:restriction base=”xs:string”><xs:length value=”11”><xs:restriction></xs:simpleType></xs:complexType></xs:element><xs:element name="图书信息"><xs:complexType><xs:sequence><xs:element name="图书"><xs:complexType><xs:sequence><xs:element name="书名" type="xs:priceType"/><xs:element name="定价" type="xs: priceType "/><xs:element name="会员价" type="xs: priceType "/><xs:element name="数量" type="xs:integer"/><xs:element name="备注" type="xs:string"/></xs:sequence><xs:attribute name="书号" type="xs:string"use="required"/></xs:complexType></xs:element><xs:element name="图书品种数" type="xs:string"/><xs:element name="总计书款" type="xs: priceType "/><xs:element name="发货费" type="xs: priceType "/><xs:element name="包装费" type="xs: priceType "/><xs:element name="余额支付" type="xs: priceType "/><xs:element name="积分支付" type="xs: priceType "/><xs:element name="优惠卡支付" type="xs: priceType "/><xs:element name="全部费用" type="xs: priceType "/><xs:element name="快递公司" type="xs:string"/><xs:element name="快递电话" type="xs:string"/><xs:element name="库房发货时间" type="xs:date"/><xs:element name="订单状态" type="xs:string"/></xs:sequence></xs:complexType></xs:element><xs:element name="订单"><xs:complexType><xs:sequence><xs:element ref="基本信息"/><xs:element ref="图书信息"/></xs:sequence></xs:complexType></xs:element></xs:schema>【程序分析】第一行是对该文档的声明,与dtd和xml一样,第2到4行是对价格和邮费等数据的类型定义一个全局类型priceStyle,下面的价格等元素来引用这个全局变量。

实验三在XML文档中使用XMLSchema

实验三在XML文档中使用XMLSchema

实验三在XML文档中使用XML Schema姓名:班级:学号:一、实验目的通过本实验,使学生能够〔1〕了解并掌握XML Schema的定义方法及其用途;〔2〕了解并掌握Schema的根本构造;〔3〕了解并掌握Schema的数据类型;〔4〕了解并掌握Schema的元素声明;〔5〕了解并掌握Schema的属性声明;〔6〕了解并掌握XML Spy中基于Schema的XML文件输入。

二、实验要求〔1〕能参照例如XML文件进展对应的XML Schema定义;〔2〕能利用Schema对XML文件进展验证。

三、实验原理〔1〕XML Schema是对XML构造进展定义的另一种机制;〔2〕XML Schema本身符合XML语法。

四、实验内容为实验一“旅行社信息〞设计的XML文档,编写Schema文档;使得Schema文档中包含以下技术的使用:〔1〕简单类型元素的定义与应用;〔2〕复杂类型元素的定义与应用;〔3〕属性声明的使用。

相关代码:<?xml version="1.0" encoding="UTF-8"?><xs:schema xmlns:xs="" elementFormDefault="qualified"attributeFormDefault="unqualified"><xs:complexType name="travelPreOrder"><xs:sequence><xs:element name="travelAgency"="mytravelAgency"></xs:element><xs:element name="planeCompany"type="myplaneCompany"></xs:element><xs:element name="trainCompany"="mytrainCompany"></xs:element><xs:element name="busCompany"type="mybusCompany"></xs:element></xs:sequence></xs:complexType><xs:complexType name="mytravelAgency"><xs:sequence><xs:element name="travelAgencyName" type="xs:string"></xs:element><xs:element name="travelAgencyEmail" type="xs:string"></xs:element><xs:element name="travelAgencyAddress"type="mytravelAgencyAddressType"></xs:element><xs:element name="travelAgencyPerson"type="mytravelAgencyPerson"></xs:element></xs:sequence></xs:complexType><xs:complexType name="mytravelAgencyAddressType"><xs:sequence><xs:element name="province"="xs:string"></xs:element><xs:element name="city" type="xs:string"></xs:element><xs:element name="street" type="xs:string"></xs:element><xs:element name="postalcode" type="xs:string"></xs:element> </xs:sequence></xs:complexType><xs:complexType name="mytravelAgencyPerson"><xs:sequence><xs:element name="name"="xs:string"></xs:element><xs:element name="sex" type="xs:string"></xs:element><xs:element name="IdCard" type="xs:string"></xs:element><xs:element name="address" type="xs:string"></xs:element><xs:element name="tel" type="xs:string"></xs:element></xs:sequence></xs:complexType><xs:complexType name="myplaneCompany"><xs:sequence><xs:element name="元素组" type="xs:string"></xs:element> </xs:sequence></xs:complexType><xs:complexType name="mytrainCompany"><xs:sequence><xs:element name="元素组" type="xs:string"></xs:element> </xs:sequence></xs:complexType><xs:complexType name="mybusCompany"><xs:sequence><xs:element name="元素组" type="xs:string"></xs:element> </xs:sequence></xs:complexType></xs:schema>五、思考题〔1〕Schema与DTD的共同点和区别是什么?XMLSchema和DTD都是用来定义各种文件中XML标记的使用标准.XMLSchema是标准的XML文件,而DTD那么使用自己的特殊语法,因此,只需要知道XML的语法规那么就可以编写Schema了,不需要再学习其它语法规那么. 可以使用一样的处理器来解读, XML文件与XML Schema文件. XML Schema 利用命名空间将文件中特殊的节点与Schema说明相联系,一个XML文件可以有多个对应的Schema ,假设是DTD的话,一个XML文件只能有一个相对应的DTD文件. XMLSchema的内容模型是开放的,可以随意扩大,而DTD那么无法解读扩大的内容. DTD只能把文件类型定义为一个字符串,而XML Schema 却允许把文件类型定义为整数,浮点数,字符串,布尔值或其他各各数据类型,而无须重新定义. XMLSchem 相对DTD的明显优势是XMLSchema 文件本身也是XML文件,而不是像DTD那样使用。

课堂练习1 XML Schema模式文档

课堂练习1  XML Schema模式文档

课堂练习1 XML Schema模式文档一、练习目的:1.掌握复杂数据类型的定义2.掌握元素、属性的声明方法二、练习内容1.根据下面的XML文档test7_1.xml写出符合要求的Schema文档。

<?xml version="1.0" encoding="gb2312"?><customer no="001718"><name>Tom</name><address>芜湖职业技术学院</address></customer>2. 分析下面的XML文档test7_2.xml,编写符合有效性验证的Schema 文档<?xml version="1.0" encoding="UTF-8"?><student xmlns:xsi="/2001/XMLSchema-instance"> <id>100023</id><name>Tom</name><sex>male</sex><age>18</age></student>数据内容类型描述要求:(1)学号以100开头,后面为3个数字的组合(正则表达式约束)(2)姓名是一个最多6个字符的字母组合,首字母大写,其余为小写字母(正则表达式约束)(3)性别在male和female之间选择(枚举约束)(4)年龄在17-30之间(值范围约束)3.分析如下Schema文档test7_3.xsd,编写符合有效性验证的XML文档test7-3.xml<?xml version="1.0" encoding="GB2312"?><xsd:schema xmlns:xsd="/2001/XMLSchema"elementFormDefault="qualified"><xsd:simpleType name="name"><xsd:restriction base="xsd:string"><xsd:enumeration value="钢笔"/><xsd:enumeration value="圆珠笔"/><xsd:enumeration value="铅笔"/><xsd:enumeration value="毛笔"/></xsd:restriction></xsd:simpleType><xsd:element name="单价"><xsd:complexType><xsd:all><xsd:element name="出厂价" type="xsd:integer"/><xsd:element name="售价" type="xsd:float"/></xsd:all></xsd:complexType></xsd:element><xsd:element name="产品"><xsd:complexType><xsd:sequence><xsd:element name="产品名称" type="name"/><xsd:element ref="单价"/></xsd:sequence><xsd:attribute name="ID" use="required"><xsd:simpleType><xsd:restriction base="xsd:NMTOKEN"/></xsd:simpleType></xsd:attribute></xsd:complexType></xsd:element><xsd:element name="产品系列"><xsd:complexType><xsd:sequence><xsd:element ref="产品" maxOccurs="unbounded"/> </xsd:sequence></xsd:complexType></xsd:element></xsd:schema>。

通过代码示例跟我学XML Schema相关的应用技术——XML Schema语法:XSDL(XML Schema定义语言)的应用示例

通过代码示例跟我学XML Schema相关的应用技术——XML Schema语法:XSDL(XML Schema定义语言)的应用示例

1.1通过代码示例跟我学XML Schema相关的应用技术——XML Schema语法:XSDL(XML Schema定义语言)的应用示例Schema有着自己的一套完整的语法,主要是对元素、属性等的定义。

涉及到的关键标签包括:Schema、element、complexType、attribute、ElementType 、AttributeType 、group、datatype、description。

1、Schema标签元素<schema>它是XML Schema中第一个出现的标签元素(也就是为根标签元素),用于声明该XML 文档是一个Schema文档。

<schema>根标签元素中包括模式的约束、XML模式命名空间的定义,其它的命名空间的定义、版本信息、语言信息和其他一些属性。

<xsd:schema xmlns="/2001/XMLSchema"xmlns:xsi=/2001/XMLSchema-instancestargetNamespace="/namespaces/Employees"> </xsd:schema>(1)Schema标签元素有两个主要的属性:1)name指定该Schema的名称2)而xmlns则指定该Schema包含的命名空间。

(2)语法如下:<xsd:schema xmlns:xsd=“/2001/XMLSchema”>…</xsd:schema>2、element标签元素<element>(1)element的语法定义<xsd:element name=”SoftWareStudent”type=”xsd:string” />(2)最主要的name和type属性XSD中的元素是利用element标识符来声明的。

<element>标签元素中的name属性是元素的名字,type属性是元素值的类型,在这里可以是XML Schema中内置的简单数据类型或其它扩展的数据类型。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验报告三XMLschema编辑环境熟悉及语法学习
【实验目的】采用XML Spy编辑schema文件
【实验任务】
(1)任务一:参照学生手册表写出其对应的Schema文件。

学生手册
学号姓名性别年龄
1张三男20
2李四女19
3王五男27
(2)任务二:参照下面的XML文件写出其对应的DTD文件和Schema文件。

<?xml version="1.0"encoding="UTF-8"?>
<library>
<books>
<book id="b-1-1">JSP实例编程</book>
<book id="b-1-2">XML详解</book>
<book id="b-1-3">servlet</book>
</books>
<records>
<items>
<date>2012-08-02</date>
<person name="李四"borrowwd="b-1-1b-1-3"/>
</items>
<items>
<date>2012-08-01</date>
<person name="张三"borrowwd="b-1-1b-1-2"/>
</items>
</records>
</library>
【学生姓名】郑小川
【学生学号】2015214588
【学生专业】电子商务
【指导老师】叶光辉
【实验时间】2017.11.28
【实验步骤】
(1)任务一:参照学生手册表写出其对应的Schema文件。

学生手册
学号姓名性别年龄
1张三男20
2李四女19
3王五男27
第一,编辑XML文档,获得格式良好的XML文档
第二,进行Schema文档的编写,如下第一个图为自己编写的schema,第二个图为软件自行生成的schema,个人发现,二者最大的区别在于软件自己生成的schema会枚举出所有xml文档中出现的数据。

因此,在用它生成XML样例时的数据也有所不同。

(2)任务二:参照下面的XML文件写出其对应的DTD文件和Schema文件。

<?xml version="1.0"encoding="UTF-8"?>
<library>
<books>
<book id="b-1-1">JSP实例编程</book>
<book id="b-1-2">XML详解</book>
<book id="b-1-3">servlet</book>
</books>
<records>
<items>
<date>2012-08-02</date>
<person name="李四"borrowwd="b-1-1b-1-3"/>
</items>
<items>
<date>2012-08-01</date>
<person name="张三"borrowwd="b-1-1b-1-2"/>
</items>
</records>
</library>
发现软件XMLSPY可以自动为XML文档生成格式良好的DTD和SCHEMA,但是自己试着编写SCHEMA的过程中发现了一些小问题。

1>自己编写DTD文件,如下,且验证格式良好。

2>自己编写的Schema文件,如下。

发现错误显示在第36行
经过多次测试,发现原因是第35行代码缺少结束符/,格式良好如下:
为XML文档添加Schema命名空间
想要为该schema文件生成一个xml的样例,但是发现错误:records上下文没有对应,person元素赋错了类型。

改正后,文件有效。

成功生成的XML样例如下(由于自行编写的SCHEMA没有枚举所有XML中的数据,因此生成的样例是最简单的格式):。

相关文档
最新文档