_实验三:XML schema语法练习
- 格式:pdf
- 大小:690.45 KB
- 文档页数:7
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(也就是可选),最多不限制。
实验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开发技术》题目:实验三基于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号出现诸如此类的毛病再列举一二观察图中蓝色部分这些良构性都没问题,有效性都有欠缺。
实验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文档中使用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.掌握复杂数据类型的定义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>。
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中内置的简单数据类型或其它扩展的数据类型。
XML实验报告(XML,DTD,SCHEMA,XPATH,XSLT,利⽤JAVA对XML进。
⽬录1).选取某⼀场景,描述该场景下的实体、实体属性以及实体之间的关系;注意选取实体最好体现出分解层次,以便于呈现XML,XML本⾝遵循层次数据模型;该部分⽂本描述要详尽,并⽤表格呈现出来。
(10分)2).采⽤XML对上述实体、实体属性及关系进⾏描述,要求体现出系统预定义实体,保证XML语法正确。
(10分)3).依据实例化XML⽂档写出组织模板⽂件DTD和SCHEMA,要求DTD与SCHEMA要保持映射,同时证明XML⽂件为有效的⽂档,同时组织模板要具有较⾼的抽象层次和较宽泛的约束能⼒。
(40分)4).提出4个查询题设,要求⾄少两个要结合XPATH标准函数,写出XPATH求解路径。
(20分)5).利⽤XSLT显⽰模板将XML⽂件展⽰为表格,与1⼀致。
(10分)6).利⽤JAVA或PYTHON等⼯具对XML⽂件节点进⾏属性值读写操作。
(10分)1).任务1-5为必做,任务6为选做;如果任务6不做,则相应分值分配给任务3和4各5分,如果做则任务6按照现有10分来评分。
请在提交课程设计开始就说明是否完成任务6。
2).每个任务评分均分为四个等级,优良中差,各任务合计之后为最终课程设计分数。
3.课程设计格式和任务之间的衔接也作为课程设计考察的⼀部分。
场景描述以学院为例,⼀个学院拥有多个专业,⼀个专业拥有多个班级和多个教师。
⼀个班级拥有多个学⽣和⼀个(唯⼀)班长,⼀个⽼师可以教授多个课程。
例如,信息管理学院有三个专业,分别是信息资源管理、电⼦商务和信息管理与信息系统。
(假设)每⼀个专业都有两个班级和两个教师,每⼀个班级都有⼀名班长和⼀名学⽣,每⼀名教师教授两门课程。
层次数据模型3.⽤表格表⽰⽂档代码<?xml version="1.0" encoding="UTF-8"?><!-- edited with XMLSpy v2014 () by () --><!-- 以下数据都是虚拟出来的数据,并不真实--><School ID="IOS001" name="信息管理学院"><Major ID="M001" name="信息资源管理"><Teacher TID="T001"><pname>陈思考</pname><sex>男</sex><professionalpost>教授</professionalpost><Course CNO="C001"><cname>⽂献信息资源检索</cname><credit>2</credit><period>32</period></Course><Course CNO="C002"><cname>管理信息系统</cname><credit>4</credit><period>48</period></Course></Teacher></Teacher><Teacher TID="T002"><pname>张简单</pname><sex>⼥</sex><professionalpost>副教授</professionalpost> <Course CNO="C003"><cname>⾼等数学B</cname><credit>2</credit><period>32</period></Course><Course CNO="C004"><cname>管理统计学</cname><credit>2</credit><period>32</period></Course></Teacher><Class CID="1901" name="信资1班"><Classpresident SID="S001"><pname>戴⼆刚</pname><sex>男</sex></Classpresident><Student SID="S002"><pname>江福</pname><sex>⼥</sex></Student></Class><Class CID="1902" name="信资2班"><Classpresident SID="S003"><pname>刘欢</pname><sex>⼥</sex></Classpresident><Student SID="S004"><pname>严⼏</pname><sex>男</sex></Student></Class></Major><Major ID="M002" name="电⼦商务"><Teacher TID="T003"><pname>王得</pname><sex>男</sex><professionalpost>教授</professionalpost> <Course CNO="C005"><cname>数据挖掘</cname><credit>3</credit><period>36</period></Course><Course CNO="C006"><cname>经济学基础</cname><credit>2</credit><period>32</period></Course></Teacher><Teacher TID="T004"><pname>王默默</pname><sex>男</sex><professionalpost>副教授</professionalpost> <Course CNO="C007"><cname>管理运筹学</cname><credit>2</credit><period>32</period></Course><Course CNO="C008"><cname>管理统计学</cname><credit>2</credit><period>32</period><period>32</period></Course></Teacher><Class CID="1903" name="电商1班"><Classpresident SID="S005"><pname>陈凡</pname><sex>男</sex></Classpresident><Student SID="S006"><pname>⽯发</pname><sex>男</sex></Student></Class><Class CID="1904" name="电商2班"><Classpresident SID="S007"><pname>吴宇</pname><sex>⼥</sex></Classpresident><Student SID="S008"><pname>葛⼀萨</pname><sex>男</sex></Student></Class></Major><Major ID="M003" name="信息管理与信息系统"> <Teacher TID="T005"><pname>刘⽟</pname><sex>⼥</sex><professionalpost>教授</professionalpost><Course CNO="C009"><cname>Java:⾯向对象程序设计</cname> <credit>4</credit><period>48</period></Course><Course CNO="C010"><cname>数据结构(C/C++)</cname><credit>3</credit><period>36</period></Course></Teacher><Teacher TID="T006"><pname>史丹</pname><sex>⼥</sex><professionalpost>副教授</professionalpost> <Course CNO="C011"><cname>XML</cname><credit>2</credit><period>32</period></Course><Course CNO="C012"><cname>UML</cname><credit>2</credit><period>32</period></Course></Teacher><Class CID="1905" name="信管1班"><Classpresident SID="S009"><pname>得得</pname><sex>男</sex></Classpresident><Student SID="S010"><pname>陈⽣</pname><sex>⼥</sex></Student></Class><Class CID="1906" name="信管2班"><Class CID="1906" name="信管2班"><Classpresident SID="S011"><pname>储梦</pname><sex>⼥</sex></Classpresident><Student SID="S012"><pname>撒⽅法</pname><sex>男</sex></Student></Class></Major></School>格式良好验证视图部分数据的效果展⽰。
xmlschema实例XML Schema 实例XML Schema 是一种用于定义 XML 文档结构、数据类型和约束的语言。
通过使用 XML Schema,可以确保 XML 文档的有效性和一致性,从而提高数据交换的可靠性和可靠性。
本文将介绍 XML Schema 实例的基本概念、语法和应用。
一、XML Schema 实例的概念XML Schema 实例是一个 XML 文档,它遵循特定的 XML Schema 定义。
它描述了 XML 文档的结构、元素和属性的数据类型以及它们之间的关系。
通过使用 XML Schema 实例,可以对 XML 文档进行验证,以确保其符合特定的规则和要求。
二、XML Schema 实例的语法XML Schema 实例遵循 XML 的语法规则,并使用特定的命名空间和元素来定义 XML 文档的结构和约束。
以下是 XML Schema 实例的基本语法要素:1. 命名空间:XML Schema 实例使用命名空间来区分不同的 XML Schema 定义。
命名空间通过 XML 文档的属性 xmlns:xsi 和 xmlns 来声明。
2. 元素:XML Schema 实例使用元素来定义 XML 文档的结构。
元素可以包含其他元素、属性和数据类型约束。
元素使用 xs:element元素来声明,并使用 name 属性指定元素的名称。
3. 属性:XML Schema 实例使用属性来定义元素的特性和约束。
属性使用 xs:attribute 元素来声明,并使用 name 属性指定属性的名称和类型。
4. 数据类型:XML Schema 实例使用数据类型来定义元素和属性的值的类型和约束。
数据类型可以是基本类型(如字符串、整数、日期等)或自定义类型。
数据类型使用 xs:simpleType 元素来声明。
5. 约束:XML Schema 实例使用约束来限制元素和属性的值的范围和格式。
约束使用 xs:restriction 元素来声明,并使用 base 属性指定所约束的数据类型。
实验报告三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中的数据,因此生成的样例是最简单的格式):。