实验2 使用DTD验证XML文档有效性-网上订单

合集下载

使用DTD规范XML文档

使用DTD规范XML文档
例:<!ELEMENT TITLE(#PCDATA)>
Page 11
3.2.2 各种元素的声明
1.基本字符元素的声明 2.含子元素的严格声明 3.包含任意内容的声明 4.子元素出现次数的声明 5.选择性子元素的声明 6.空元素的声明 7.混合型元素的声明 8.实体的声明
Page 12
1.基本字符元素的声明
Page 16
5.选择性子元素的声明
语法:<!ELEMENT 元素名称 使用规则> 语法:<!ELEMENT 元素名称 (子元素)> (子元素):指示元素中包含的子元素 1如果子元素用“|”分开,说明任选其一。
Page 17
6.空元素的声明
语法:<!ELEMENT 元素名称 使用规则> EMPTY:指示元素的不能有主体内容。 <!ELEMENT 元素名称 EMPTY >
语法:<!ELEMENT 元素名称 使用规则> <!ELEMENT 元素名称 (#PCDATA) > 指示元素的主体内容只能是普通的文 本.(Parsed Character Data)
Page 13
2.含子元素的严格声明
语法:<!ELEMENT 元素名称 使用规则> <!ELEMENT 元素名称 (子元素)> (子元素):指示元素中包含的子元素 如果子元素用逗号分开,说明必须按照声明 顺序去编写XML文档 <!ELEMENT 元素名称 (子元素1,子元素2,子 元素3,…)>
Page 19
要宣告混合内容的元素型态,你可以使用下列两 种内容模型格式的任何一种: 1 只有字符数据 。要宣告只包含字符数据的元 素型态,使用内容模型(#PCDATA)。例如, 下面的宣告让SUBTITLE 元素只能包含字符数据: <!ELEMENT SUBTITLE (#PCDATA)> 根据这个宣告,下面两个元素都是有效的: <SUBTITLE>A New Approach</SUBTITLE> <SUBTITLE></SUBTITLE>

在XML文档中如何应用DTD文档的应用示例

在XML文档中如何应用DTD文档的应用示例

1.1在XML文档中如何应用DTD文档的应用示例1.1.1应用内部DTD1、在XML文件中直接内嵌DTD的定义标签<?xml version="1.0" encoding="gbk" ?><!DOCTYPE dbconfig [<!ELEMENT dbconfig (JDBC_DBDriver_ClassName,JDBC_DSN_URL,JDBC_dbUserName,JDBC_dbUserPassW ord)><!ELEMENT JDBC_DBDriver_ClassName (#PCDATA)><!ELEMENT JDBC_DSN_URL (#PCDATA)><!ELEMENT JDBC_dbUserName (#PCDATA)><!ELEMENT JDBC_dbUserPassWord (#PCDATA)>]><dbconfig><JDBC_DBDriver_ClassName>com.mysql.jdbc.Driver</JDBC_DBDriver_ClassName> <JDBC_DSN_URL>jdbc:mysql://localhost:3306/imsystem</JDBC_DSN_URL><JDBC_dbUserName>root</JDBC_dbUserName><JDBC_dbUserPassWord>root </JDBC_dbUserPassWord></dbconfig>2、测试正确性1.1.2Eclipse提供有对DTD的语法检查功能——及时语法帮助和检查1、根标签内的各个子标签不满足DTD中的要求时——有相同的两个子标签存在2、根标签内的各个子标签不满足DTD中的要求时——存在有DTD中没有的子标签时3、根标签内的各个子标签不满足DTD中的要求时——缺少某个子标签时1.1.3为标签添加属性定义1、在Outline视图中右击某个标签定义2、然后在属性视图中修改属性定义最后产生出下面的结果<?xml version="1.0" encoding="UTF-8"?><!ELEMENT dbconfig (JDBC_DBDriver_ClassName,JDBC_DSN_URL,JDBC_dbUserName,JDBC_dbUserPassWord) ><!ATTLIST dbconfig id CDATA #REQUIRED><!ELEMENT JDBC_DBDriver_ClassName (#PCDATA)><!ELEMENT JDBC_DSN_URL (#PCDATA)><!ELEMENT JDBC_dbUserName (#PCDATA)><!ELEMENT JDBC_dbUserPassWord (#PCDATA)> 3、此时的XML文件将出现错误错误的原因如下4、修改XML文件。

实验2 使用DTD验证XML文档有效性-网上订单

实验2 使用DTD验证XML文档有效性-网上订单

实验2 使用DTD验证XML文档——网上订单(必做题)1. 实验内容编写一个DTD文档定义一套用于描述网上售书的XML标记,使用DTD中自定义的标记描述实验1中的“网上订单”数据。

2. 实验要求:(1)“书名”一列中的“图书编号”使用ID类型的属性描述。

(2)“支付方式”和“发货方式”定义成“订单”属性,使用枚举类型描述。

“支付方式”的枚举值:邮局汇款、网上支付、银行转账、支付宝。

“发货方式”的枚举值:普通邮递、EMS、快递。

(3)“订单状态”用枚举类型的属性描述,其值为“未发货”、“正在配货”或者“已发货”,初值设为“未发货”。

(4)其它元素和属性自定义。

(5)使用外部DTD文档引用方式进行订单有效性验证。

(选做题)1. 实验内容:一个电影实体(Movie)包含如下信息:Title:电影的名称;Type:电影的类型(浪漫、戏剧、恐怖、冒险、神秘等);Rating:电影的级别(G、PG、PG-3、R、X);Review:推荐指数(例如:用1到5之间的数字代表对影片的推荐程度);Year:电影最初发布的年份;Writer:作者;Producer:制片人;Director:导演;Actor:演员;Comments:影片主要内容的介绍请根据以上信息编写一个电影收藏DTD文档,并建立一个基于DTD的电影收藏XML 文档,文档中包含若干不同类型的影片。

2. 实验要求:(1)电影收藏DTD文档以Movies.dtd命名,XML文档以Movies.xml命名;(2)根元素为Movies,包含若干子元素Movie;(3)信息组织:属性:Type、Rating、Review、Year;子元素:Title、Writer、Producer、Director、Actor、Comments;(4)电影收藏XML文档至少包含一部影片;(5)Writer、Producer、Director为一个或多个;Actor为零个或多个,Comments为零个或一个;(6)子元素严格按Title、Writer、Producer、Director、Actor、Comments顺序出现,采用外部引用方式验证XML文档有效性。

实验三 使用模式文档定义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(二)有效的XML:DTD(文档类型定义)介绍与三种使用方式

XML(二)有效的XML:DTD(文档类型定义)介绍与三种使用方式

XML(⼆)有效的XML:DTD(⽂档类型定义)介绍与三种使⽤⽅式有效的XML: DTD(⽂档类型定义)介绍有效(Valid)的XML⽂档: ⾸先,XML⽂档是个格式正规的(Well-formed)XML⽂档; 其次,需要满⾜DTD的要求,这样的XML⽂档称为有效的(Valid)XML⽂档。

DTD DTD,即⽂档类型定义——Document Type Definition。

DTD⽤来描述XML⽂档的结构, ⼀个DTD⽂档包含: 元素(ELEMENT)的定义规则; 元素之间的关系规则; 属性(ATTLIST)的定义规则; 可使⽤的实体(ENTITY)或符号(NOTATION)规则。

DTD⽂档与XML⽂档实例的关系 类与对象; 数据库表结构与数据记录; 有了DTD,每个XML⽂件可以携带⼀个⾃⾝格式的描述。

有了DTD,不同组织的⼈可以使⽤⼀个通⽤DTD来交换数据。

应⽤程序可以使⽤⼀个标准DTD校验从外部世界接收来的XML数据是否有效。

可以使⽤DTD校验⾃⼰的XML数据。

如何⽣成DTD⽂档DTD⽂档有三种应⽤形式: 1.内部DTD⽂档<!DOCTYPE 根元素[定义内容]> 2.外部DTD⽂档<!DOCTYPE 根元素 SYSTEM "DTD⽂件路径"> 3.内外部DTD⽂档结合<!DOCTYPE 根元素 SYSTEM "DTD⽂件路径" [定义内容]>内部DTD ⼀个内部DTD的例⼦: 上半部分是DTD,下⾯是XML⽂档,⽂档要符合DTD。

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE poem [<!ELEMENT poem (author, title, content)><!ELEMENT author (#PCDATA)><!ELEMENT title (#PCDATA)><!ELEMENT content (#PCDATA)>]><!--为元素poem定义了三个⼦元素author title content,这三个元素必须要出现并且必须按照这个顺序少元素不⾏,多元素也不⾏--><!--指明author,title,content⾥⾯的内容是字符串类型--><poem><author>王维</author><title>⿅柴</title><content>空⼭不见⼈,但闻⼈语声。

XML实验2

XML实验2

训练二:分别采用内部DTD和外部DTD为训练一的XML文档创建一个验证DTD实训目的:1、掌握DTD文档的创建2、理解内部DTD与外部DTD3、掌握通过已经存在的DTD文档来创建一个XML文档4、了解DTD与XML文档之间的联系实训环境:软件:利用XML SPY 2004软件完成本实训内容。

实训内容:一、为实训一所创建的XML文档创建一个内部DTD具体步骤:1、启动XML SPY软件2、创建内部DTD文档单击[File]菜单-选择[Open]选项,将实训一所创建的XML文档打开。

注意:因为内部DTD和XML文档是同时保存在相同的一个XML文档中,所以在这里我们直接将第一次实训实现的XML打开,直接在其里面进行内部DTD的创建。

3、根据你在实训一中所创建的XML文档结构来编写出其DTD验证文档。

4、保存二、为实训一所创建的XML文档创建一个外部DTD具体步骤:1、选择菜单项[File]-选择[New]-选择DTD文档-单击[OK]按钮,如图2-1所示。

图 2-12、这时将出现如图2-2所示的界面图2-23、根据你在实训一中所创建的XML文档结构来编写出其DTD验证文档。

4、编写完成后,以Friends.dtd文件保存,如图2-3,并让指导老师进行检查。

图2-3三、利用刚才创建的外部DTD来自动创建一个XML文档1、选择菜单项[File]-选择[New]-选择XML文档-单击[OK]按钮。

2、在右面的界面中选择[DTD] -单击[OK]按钮。

3、在图2-4的界面中选择刚才创建的外部DTD文档-单击[OK]按钮图2-44、这时将出现如图2-5所示的XML文档结构图2-55、将上面的对DTD的引用方式改成以公共方式进行引用实训数据参考:图2-6实训分析与总结:1、内部DTD与外部DTD有什么区别?2、系统引用与公共引用外部DTD有什么不同?3、怎样才能让一个格式良好的XML文档变合法的XML文档呢?。

第三章 XML语法检 查DTD

第三章  XML语法检 查DTD

DTD的属性声明
2、枚举类型 枚举类型并不需要使用一个关键字,它只 是将所有的属性列举出来,并以竖线分隔。枚 举类型的每一个可能值都必须遵循XML的名称 命名规则,然后就可以从这些值中选出一个作 为属性值。 例:<!- - DTD部分 - - > <!ATTLIST PET HOTSELL (TRUE|FALSE) “FALSE” > <!- - 文件元素部分- - > <PET HOTSELL = “TRUE”>热卖中!</PET>
DTD的属性声明
3、NMTOKEN类型 NMTOKEN规定属性值必须是正确的XML名称 (即必须以字母或下划线开头,后面的字符可 以为字母、数字、下划线、连字符和点号,但 不可包含空格)。 如: <!- - DTD部分 - - > <!ATTLIST CUSTOMER COUNTRY NMTOKEN #REQUIRED > <!- - 文件元素部分- - > <CUSTOMER COUNTRY=“CHN”>…… </CUSTOMER>
DTD的元素声明
3、声明空元素的声明格式: <!ELEMENT 元素名 EMPTY> • 该结构当声明的XML文档元素的内容为空时, 有效。如: <!- - DTD部分 - - > <!ELEMENT 位置 EMPTY> <!- - 文件元素部分- - > <位置></位置>
DTD的元素声明
4、声明自由类型元素的格式: <!ELEMENT 元素名 ANY> • 元素的内容可以是任何数据: 任何被声明过的元素,元素出现的顺序和次数不 受限制; 文本内容或CDATA段 例:example3.xml 5、混合类型 若某元素既包含子元素又包含已编译的字符数据,则 该元素具有混合内容。其声明的语法如下: <! ELEMENT pick (#PCDATA | one | two | three)*>

《XML》实验指导书--吐血推荐--史上最全--精华版

《XML》实验指导书--吐血推荐--史上最全--精华版

XML实验指导书适用专业:软件技术执笔人:周辉奎南昌工学院信息学院编二〇一一年十二月目录实验项目一编写一个简单的XML文档 (1)实验项目二文档类型定义DTD的使用 (4)实验项目三 DTD实体的使用 (8)实验项目四 XML Schema的使用 (10)实验项目五 XML模式之间的调用 (14)实验项目六级联式样式表CSS的使用 (17)实验项目七可扩展样式表XSL的使用 (21)实验项目八基于条件进行格式化数据 (27)实验项目九 XML文档对象模型DTD的语法 (30)实验项目十 XML文档对象模型DTD的使用 (32)实验项目十一 XML综合应用 (33)实验项目一编写一个简单的XML文档一、实验目的和要求:(一)目的:1、掌握XML开发工具XMLEditPro 2.2软件的使用方法。

2、熟悉一个简单的XML文档的基本格式。

3、熟悉一个简单的XML文档的组成要素。

4、掌握XMLEditPro 2.2的基本使用方法。

(二)要求:1、认真做好实验前的各项准备工作,熟悉实验内容和机器操作流程。

2、遵守实验室规章制度和实验课堂教学纪律。

3、认真完成实验任务,填写实验报告。

4、熟悉XML开发工具XMLEditPro 2.2软件。

二、实验时数:2学时三、实验器材:安装有XML开发工具XMLEditPro 2.2软件的PC机一台。

四、实验内容或步骤:(一)内容:1、按下面要求编写一个简单的XML文档,并保存文件名为Room.xml,然后在IE中浏览。

酒店管理系统中,需要存储客房信息。

要求对于酒店的各部门(如客房部、办公室等)、客户都可以通过不同的系统或网络了解客房的有关信息,客房]信息数据应存储在独立于软件和硬件的数据格式中。

客房信息包括:客房编号、客房标准(房间类型)、客房位置、客房单价、备注。

步骤:源代码如下:<?xml version="1.0"?><!--information of the room library --><ROOMLIBRARY><ROOM ROOMNO="001"><TYPENAME>双人</TYPENAME><PLACE>朝南</PLACE><PRICE>100</PRICE><DESC>已预订</DESC></ROOM><ROOM ROOMNO="002"><TYPENAME>三人</TYPENAME><PLACE>朝北</PLACE><PRICE>150</PRICE><DESC>未预订</DESC></ROOM></ROOMLIBRARY>2、使用XMLEditPro 2.2或记事本等文本编辑器编辑如下XML文档,并保存文件名为code1_1.xml,然后在IE中浏览。

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

实验2 使用DTD验证XML文档——网上订单
(必做题)
1. 实验内容
编写一个DTD文档定义一套用于描述网上售书的XML标记,使用DTD中自定义的标记描述实验1中的“网上订单”数据。

2. 实验要求:
(1)“书名”一列中的“图书编号”使用ID类型的属性描述。

(2)“支付方式”和“发货方式”定义成“订单”属性,使用枚举类型描述。

“支付方式”的枚举值:邮局汇款、网上支付、银行转账、支付宝。

“发货方式”的枚
举值:普通邮递、EMS、快递。

(3)“订单状态”用枚举类型的属性描述,其值为“未发货”、“正在配货”或者“已发货”,初值设为“未发货”。

(4)其它元素和属性自定义。

(5)使用外部DTD文档引用方式进行订单有效性验证。

(选做题)
1. 实验内容:
一个电影实体(Movie)包含如下信息:
Title:电影的名称;
Type:电影的类型(浪漫、戏剧、恐怖、冒险、神秘等);
Rating:电影的级别(G、PG、PG-3、R、X);
Review:推荐指数(例如:用1到5之间的数字代表对影片的推荐程度);
Year:电影最初发布的年份;
Writer:作者;
Producer:制片人;
Director:导演;
Actor:演员;
Comments:影片主要内容的介绍
请根据以上信息编写一个电影收藏DTD文档,并建立一个基于DTD的电影收藏XML 文档,文档中包含若干不同类型的影片。

2. 实验要求:
(1)电影收藏DTD文档以Movies.dtd命名,XML文档以Movies.xml命名;
(2)根元素为Movies,包含若干子元素Movie;
(3)信息组织:
属性:Type、Rating、Review、Year;
子元素:Title、Writer、Producer、Director、Actor、Comments;
(4)电影收藏XML文档至少包含一部影片;
(5)Writer、Producer、Director为一个或多个;Actor为零个或多个,Comments为零个或一个;
(6)子元素严格按Title、Writer、Producer、Director、Actor、Comments顺序出现,采用外部引用方式验证XML文档有效性。

相关文档
最新文档