版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
《XML基础教程(第2版)》第3章有效的XML文件
本章主要内容第3章有效的XML文件规范的XML文件和有效的XML文件
XML的核心是使用标记组织数据之结构,以便让信息的交互更加方便。
规范性仅仅是XML语言的基本语法,没有对XML文件怎样组织数据进行具体的限制。在某些系统中,如果不对XML怎样组织数据进行合理的约束,那么对同一问题编写的XML文件,在数据组织结构上就可能有很大的不同。
例子1例子1time1.xml<?xmlversion="1.0"encoding="UTF-8"?><商店营业时间><商店><商店名称>国贸大厦</商店名称>
<营业时间>08:30至18:30</营业时间></商店><商店><商店名称>华联商场</商店名称>
<营业时间>07:30至22:30</营业时间></商店></商店营业时间><?xmlversion="1.0"encoding="UTF-8"?><商店营业时间><商店><商店名称>国贸大厦</商店名称><开门时间>08:30</开门时间><关门时间>18:30</关门时间></商店><商店><商店名称>华联商场</商店名称><开门时间>07:30</开门时间><关门时间>22:30</关门时间></商店></商店营业时间>例子1time2.xml§3.1有效XML文件的定义对XML组织数据进行约束的主要原因有两个,一是让XML的数据组织的更加合理,符合系统的要求,二是便于维护XML中的数据,从而提高整个系统的可维护性。
对XML的数据结构进行限制有两种方式:使用文档类型定义(DocumentTypeDefinition,DTD)和XMLSchema模式。一个规范的XML文件如果和某个DTD文件相关联,并遵守该DTD文件规定的约束条件,就称之为有效的XML文件。
§3.1.1初识DTD
DTD文件也是有着特殊结构的文件,简单地说,DTD文件是由元素所构成的文本文件。在DTD文件中,用关键字ELEMENT来定义一个元素,格式如下:
<!ELEMENT标记名称标记的约束条件>需要一个刻画商店营业时间的XML文件,但数据之结构必须符合下列要求。Page28◆根标记的名称是“商店营业时间”。◆根标记可以有若干个名称为“商店”的子标记。◆名称为“商店”标记顺序地包含有名称为“商店名称”、“开门时间”和“关门时间”的子标记。◆名称为“商店名称”的标记包含的内容只能是文本数据,不能包含有子标记◆名称为“开门时间”的标记包含的内容只能是文本数据,不能包含有子标记。◆名称为“关门时间”的标记包含的内容只能是文本数据,不能包含有子标记。DTD通过其中的元素来限制XML文件中的标记
◆
<!ELEMENT商店营业时间(商店*)>◆
<!ELEMENT商店(商店名称,开门时间,关门时间)>◆
<!ELEMENT商店名称(#PCDATA)>◆<!ELEMENT开门时间(#PCDATA)>◆<!ELEMENT关门时间(#PCDATA)>§3.1.2DTD文件的保存
DTD文件需使用文本编辑器编写、保存。
DTD文件的扩展名必须是“.dtd”,保存时所选择的编码必须和其关联的XML文件一致,比如,DTD所要约束的XML文件的编码为UTF-8,那么DTD文件也必须按着UTF-8编码保存。
limitShop.dtdlimitShop.dtd<!ELEMENT商店营业时间(商店*)><!ELEMENT商店(商店名称,开门时间,关门时间)><!ELEMENT商店名称(#PCDATA)><!ELEMENT开门时间(#PCDATA)><!ELEMENT关门时间(#PCDATA)>
§3.1.3XML文件与DTD文件相关联
一个XML文件只有和某个DTD文件相关联,才会受到该DTD文件的约束。
在XML文件中使用“文档类型声明”与一个DTD文件相关联。有两种形式的关联:SYSTEM和PUBLIC。1.SYSTEM格式
使用SYSTEM文档类型声明的格式:
<DOCTYPE根标记的名称SYSTEM"DTD文件的URI">
例
<!DOCTYPE商店营业时间SYSTEM"limitShop.dtd">
和名字是“limitShop.dtd”的DTD文件相关联2.
PUBLIC格式
使用PUBLIC文档类型声明的格式:
<!DOCTYPE根标记的名称PUBLIC"正式公用标识符""DTD文件的URI">
例<!DOCTYPE商店营业时间PUBLIC"-//ISO123456/Daxian/ForXML/EN""limitshop.dtd">和名字是“limitShop.dtd”的DTD文件相关联3.
DTD文件的位置
SYSTEM或PUBLIC格式的文档类型声明中提到的:"DTD文件的URI"必须是一个有效的资源,◆如果URI是一个文件的名字,该DTD文件必须和当前XML文件在同一目录中◆如果URI是一个URL,该URL必须是可以访问的。例子2example3_2.xml<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPE手机用户表SYSTEM"limitShop.dtd"><商店营业时间><商店><商店名称>西单商场</商店名称><开门时间>06:30</开门时间><关门时间>23:00</关门时间></商店><商店><商店名称>海淀商厦</商店名称><开门时间>07:30</开门时间><关门时间>18:30</关门时间></商店></商店营业时间>limitShop.dtd<!ELEMENT商店营业时间(商店*)><!ELEMENT商店(商店名称,开门时间,关门时间)><!ELEMENT商店名称(#PCDATA)><!ELEMENT开门时间(#PCDATA)><!ELEMENT关门时间(#PCDATA)>
§3.2如何检查有效性当用浏览器打开一个有效的XML文件时,浏览器的XML解析器仅仅检查XML文件是否是规范的、检查XML所关联的DTD文件是否有语法错误,并不检查XML文件是否遵守该DTD规定的约束条件。我们可以使用DOM解析器来检查一个XML文件是否是有效的。简要的说明如下:首先获取一个DocumentBuilderFactory对象factory:
DocumentBuilderFactoryfactory=DocumentBuilderFactory.newInstance();factory设置是否检查XML文件的有效性:
factory.setValidating(true);factory对象调用方法newDocumentBuilder()返回DOM解析器:
DocumentBuilderdomParser=factory.newDocumentBuilder();解析器domParser调用
publicDocumentparse(Filef)throwsSAXException,IOException方法解析XML文件。例子3TestValidate.java
DTD文件使用元素(ELEMENT)来约束XML文件中的标记,在DTD文件中使用ELEMENT定义一个元素,格式为:
<!ELEMENT标记名称标记的约束条件>例如:<!ELEMENT学生(学号,姓名)>特别需要强调以下两点:
DTD文件中的元素的作用与其在DTD文件中的书写位置无关。
DTD文件中不允许使用多个元素约束同一个标记。§3.3
DTD中的元素
§3.3.1约束标记只包含有文本数据
如果准备约束一个标记没有子标记,也就是说只能有文本数据,那么“标记的约束条件”是用小括号括起的#PCDATA,格式如下:
<!ELEMENT标记名称(#PCDATA)>例如,对于
<!ELEMENT姓名(#PCDATA)>下列3个名称是“姓名”的标记都是符合约束条件的标记:<姓名>张三</姓名><姓名></姓名><姓名/>而<姓名>李逵<sex>男</sex></姓名>是不符合约束条件的标记§3.3.2约束标记的子标记_1元素的格式
若要约束XML文件中某个标记可以有怎样的子标记,那么DTD中元素<!ELEMENT标记名称
标记的约束条件
>声明的“标记的约束条件”是用小括号括起的子标记列表,格式为
<!ELEMENT标记名称(子标记列表)>注:“子标记列表”中用逗号分隔列出的若干个标记是有先后顺序的“开学时间”标记是不符合约束的标记
×<开学时间>清华大学<year>2010</year><month>09</month><day>01</day></开学时间>“开学时间”标记是符合约束的标记
√<开学时间><year>2010</year><month>09</month><day>01</day></开学时间>“开学时间”标记是不符合约束的标记
×<month>09</month><year>2010<year><day>01</day>§3.3.2约束标记的子标记_2模式限定符的使用
1元素格式<!ELEMENT标记名称(子标记列表)>中的“子标记列表”的每个标记的后面可以尾加模式限定符号来限定该子标记出现的次数。不尾加限定符号的子标记必须出现且只能出现一次。限定符号有:+:尾加该限定符号的子标记必须出现一次或多次。*:尾加该限定符号的子标记可出现零次或多次。?:尾加该限定符号的子标记可出现零次或一次。例如:<!ELEMENT库存商品(商品名称+,管理员?)>2“子标记列表”中的子标记也可以是几个标记的“或运算”,而且“或运算”必须用小括号扩起,例如,元素:<!ELEMENT应聘者(姓名,(本科|硕士|博士),性别)><!ELEMENT学生(姓名,(奖励|处分)*,性别)>
例子4example3_4.xmlfourDTD.dtd<!ELEMENT应聘信息(应聘者*)><!ELEMENT应聘者(姓名,(本科|硕士|博士),(奖励|处分)*,(性别))><!ELEMENT姓名(#PCDATA)><!ELEMENT本科(#PCDATA)><!ELEMENT硕士(#PCDATA)><!ELEMENT博士(#PCDATA)><!ELEMENT奖励(#PCDATA)><!ELEMENT处分(#PCDATA)><!ELEMENT性别(#PCDATA)>§3.3.3约束标记的混合内容
一个标记的内容可以有两部分构成文本数据和标记,其中的标记称做该标记的子标记.上面我们已经知道怎样使用DTD约束标记的子标记,比如<!ELEMENT开学时间(year,month.day)>约束“开学时间”恰好包含有3个子标记year、month和day,不可以包含有能显示的文本数据。如果允许标记的内容即可以有可显示的文本数据,也可以有子标记,那么在DTD文件中,元素的“标记的约束条件”是关键字“#PCDATA”和若干个子标记的“或运算”,而且该“或运算”必须用小括号括起并尾加一个“*”号,格式如下:
<!ELEMENT标记名称(#PCDATA|子标记1|子标记2…|子标记m)*>注:几种常见的错误写法,及错误的原因见page37例子5example3_5.xml<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPE学生列表PUBLIC"-//ISO88//school//ForXML/Ch""fiveDTD.dtd"><学生列表><姓名>张三<出生日期>1993-12-12</出生日期><性别>男</性别></姓名><姓名>孙翠花<出生日期>1992-01-31</出生日期><性别>女</性别></姓名></学生列表><!ELEMENT学生列表(姓名*)><!ELEMENT姓名(#PCDATA|出生日期|性别)*><!ELEMENT出生日期(#PCDATA)><!ELEMENT性别(#PCDATA)>fiveDTD.dtd§3.3.4EMPTY和ANY
如果准备约束一个标记是空标记,或者是只含有空字符的非空标记,元素的“标记的约束条件”可以是关键字“EMPTY”;如果不准备对一个标记有任何约束,元素的“标记的约束条件”可以是关键字“ANY”。对于元素:<!ELEMENTspeakEMPTY>下列2个标记都是符合约束条件的标记:<speak/><speak></speak>对于元素:<!ELEMENThelloANY>下列2标记是符合约束条件的标记:<hello>howareyou</hello><hello><english>howareyou</english><chinese>你好</chinese></hello>§3.4DTD的完整性
(1)不允许无穷嵌套如果一个DTD元素约束某个标记可以出现某个子标记,那么对该子标记进行约束的DTD元素就不能约束该标记的子标记是它的父标记。DTD文件中同时出现下列两个元素是不允许的。<!ELEMENT学生(姓名,性别)><!ELEMENT姓名(学生,拼音)>(2)XML文件中的每个标记都必须在DTD中有相应元素进行约束。
nocomplete.dtd是不完整的
×
<!ELEMENT商店营业时间(商店*)><!ELEMENT商店(商店名称,开门时间,关门时间)><!ELEMENT商店名称(#PCDATA)>§3.5
DTD中的属性约束列表
XML文件中的标记可以附带属性,标记附带属性的目的是为该标记添加附加信息。标记的属性是一个“名-值”对,即属性必须由名字和值组成。属性必须在非空标记的开始标签或空标记中声明,用“=”为属性指定一个值。例如,下列名字为“长方体”的空标记有三个属性:
<长方体length="1000"width="300"height="600"/>§3.5.1ATTLIST属性约束列表_1
DTD文件中可以使用元素约束XML文件中的标记。同样,可以通过在DTD文件中定义属性约束列表来约束XML文件中的标记的属性。
DTD使用关键字ATTLIST定义一个属性约束列表来约束XML文件中标记的属性,在DTD中定义属性约束列表的格式为:<!ATTLIST标记名称属性名称属性类型默认值情况属性名称属性类型默认值情况…….>ATTLIST属性约束列表1<!ATTLIST教室
widthCDATA"0"lengthCDATA"0">ATTLIST属性约束列表2<!ATTLIST姓名性别CDATA"男"><!ELEMENT教学楼(教室*)><!ELEMENT教室(号码,用途)><!ELEMENT号码(#PCDATA)><!ELEMENT用途(#PCDATA)><!ATTLIST教室widthCDATA"8m"><!ATTLIST教室lengthCDATA"15m">例子6example3_6.xml<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPE教学楼SYSTEM"sixDTD.dtd"><教学楼><教室><号码>A101</号码><用途>自习室</用途></教室><教室width="10m"length="16m"><号码>A606</号码><用途>语音室</用途></教室></教学楼>sixDTD.dtd图3.4使用ATTLIST属性约束列表约束属性§3.5.1ATTLIST属性约束列表_2
1.属性名称属性名称可以由字母、数字、下划线(“_”)、点(“.”)或连字符(“-”)组成,但必须以字母或下划线开头,属性的名称区分大小写。2.属性类型属性值一定是一个字符串,那么属性类型就决定了属性可以用怎样的字符串作为它的值。注:属性值中都不能含有含有左尖括号“<”、右尖括号“>”、与符号“&”、单引号“'”和双引号“"”,如果想使用这些字符,可以使用实体引用。要特别注意的是,属性值区分大小写。3.默认值情况
ATTLIST定义的属性约束列表是为了约束XML文件中标记的属性,ATTLIST属性约束列表:<!ATTLIST标记名称属性名称属性类型默认值情况>中的“默认值情况”是对标记的属性进行约束的细节条件。§3.5.2属性的默认值
ATTLIST属性约束列表<!ATTLIST标记名称属性名称属性类型默认值情况>其中的“默认值情况”含有约束的细节条件。“默认值情况”可以是下列三种情形:●“默认值情况”是字符串,例如:<!ATTLIST桌子colorCDATA"red">
“默认值情况”是字符串"red"。●“默认值情况”是#IMPLIED或#REQUIRE,例如:<!ATTLIST汽车车牌CDATA#REQUIRED>
“默认值情况”是#REQUIRED。●“默认值情况”是#FIXED"字符串"。例如:<!ATTLIST火警电话号码CDATA#FIXED"119">
“默认值情况”是#FIXED"119"。“默认值情况”对标记的属性给予约束的意义如表3.1。表3.1默认值情况的约束意义
§3.5.2属性的默认值_1“默认值情况”是字符串
“默认值情况”是字符串,例如:<!ATTLIST桌子colorCDATA"red">
“默认值情况”是字符串"red"。◆在编写XML中时,可以显示地为被约束的标记附加该属性,并且可以重新指定该属性的值。◆编写XML文件时,也允许被约束的标记不显示地附加该属性,在这种情况下,解析器认为该标记有这个属性,并且默认值为ATTLIST属性约束列表中“默认值情况”给定的字符串。<!ELEMENT商品列表(商品*)><!ELEMENT商品(名称,价格)><!ELEMENT名称(#PCDATA)><!ELEMENT价格(#PCDATA)><!ATTLIST商品类别CDATA"食品">例子7example3_7.xml<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPE商品列表SYSTEM"sevenDTD.dtd"><商品列表><商品类别="家电"><名称>电视机</名称><价格>2678元/台</价格></商品><商品><!--没有显示地附加“类别”属性--><名称>东北大米</名称><价格>5.9元/千克</价格></商品></商品列表>sevenDTD.dtd§3.5.2属性的默认值_2默认值情况”是#IMPLIED
在ATTLIST属性约束列表中可以设置属性的“默认值情况”是#IMPLIED。例如:<!ATTLIST桌子color#IMPLIED>这时,该属性就没有默认值,而且被约束的标记可以不附加该属性。当认为一个属性对于标记可有可无、且没有默认值时,就可以将属性的“默认值情况”设置为#IMPLIED。§3.5.2属性的默认值_3#REQUIRED
在ATTLIST属性约束列表中可以设置属性的“默认值情况”是#REQUIRED,例如:<!ATTLIST桌子length#REQUIRED桌子width#REQUIRED桌子height#REQUIRED>这时,该属性没有默认值,被约束的标记必须要附加该属性并给出属性的值。当不想为某个属性设置默认值,但要求标记必须附加该属性时,就可以将属性的“默认值情况”设置为#REQUIRED。§3.5.2属性的默认值_4#FIXED
ATTLIST属性约束列表中可以设置属性的“默认值情况”是:
#FIXED"字符串"例如:
<!ATTLIST报警电话号码CDATA#FIXED"110">
这时,该属性的默认值就是关键字#FIXED后面指定的那个字符串。在编写XML文件时,即使被约束的标记不显示地附加该属性,解析器也认为该标记有这个属性,而且属性值是#FIXED后面指定的那个字符串。但是,在编写XML文件时,如果被约束的标记显示地附加该属性,那么不可以改变属性的值,即该属性的值必须是#FIXED后面指定的那个字符串。当准备约束标记的某个属性的值是固定不变的一个值,就可以将属性的“默认值情况”设置为:#FIXED"字符串"
<!ELEMENT教学楼(教室*,休息室*)><!ELEMENT教室(#PCDATA)><!ELEMENT休息室(#PCDATA)><!ATTLIST教室号码CDATA#REQUIRED><!ATTLIST休息室号码CDATA#IMPLIED>例子8example3_8.xml<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPE教学楼SYSTEM"eightDTD.dtd"><教学楼><教室号码="2109">物理系专用</教室><教室号码="5509">英语系专用</教室><休息室号码="T5">老师课间休息专用</休息室><休息室>学生课间休息专用</休息室></教学楼>eightDTD.dtd图3.6默认值情况为#REQUIRED和#IMPLIED<!ELEMENT重要电话薄(报警电话,火警电话,急救电话)><!ELEMENT报警电话(#PCDATA)><!ELEMENT火警电话(#PCDATA)><!ELEMENT急救电话(#PCDATA)><!ATTLIST报警电话号码CDATA#FIXED"110"><!ATTLIST火警电话号码CDATA#FIXED"119"><!ATTLIST急救电话号码CDATA#FIXED"120">例子9example3_9.xml<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPE重要电话薄
SYSTEM"ten.dtd"><重要电话薄><报警电话
号码="110">不要乱打报警电话。</报警电话><火警电话>一旦发生火灾,请及时拨打火警电话。</火警电话><急救电话>救死扶伤</急救电话></重要电话薄>
nineDTD.dtd图3.7默认值情况为#FIXED图3.8使用解析器检查出的错误§3.5.3属性类型
属性类型决定了属性可以用怎样的字符串作为属性的值。属性的常用类型有:
CDATA、Enumerated、NMTOKEN、NMTOKENS、ID、IDREF、IDREFS。§3.5.3属性类型_1CDATA类型
1.CDATA类型对于CDATA(CharacterData)类型的属性,该属性的值可以是任何一个字符串,但是,字符串中不能含有含有左尖括号、右尖括号、与符号、单引号和双引号,如果想使用这些字符,可以使用实体引用。例题3-10page47<!ELEMENT通讯录(姓名*)><!ELEMENT姓名(#PCDATA)><!ATTLIST姓名电话CDATA#REQUIREDemailCDATA#REQUIRED
住址CDATA#IMPLIED>例子10example3_10.xml<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPE通讯录SYSTEM"tenDTD.dtd"><通讯录><姓名电话="12345678"email="zhangfei@">张飞</姓名><姓名电话="98765432"email="likui@"住址="大连老鳖湾">李逵</姓名></通讯录>tenDTD.dtd§3.5.3属性类型_2.Enumerated类型
2.Enumerated类型如果属性的类型是Enumerated类型,那么该属性只可以是枚举值。在ATTLIST属性约束列表中使用Enumerated类型的格式如下:
<!ATTLIST标记名称属性名称(属性值1|属性值2|…|属性值n)默认值情况>
例题3-11page48<!ELEMENT道路(路灯*)><!ELEMENT路灯(编号,位置)><!ELEMENT编号(#PCDATA)><!ELEMENT位置(#PCDATA)><!ATTLIST路灯状态(亮|灭)#REQUIRED>例子11example3_11.xml<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPE道路SYSTEM"elevenDTD.dtd"><道路><路灯状态="亮"><编号>10010</编号><位置>中山路</位置></路灯><路灯状态="灭"><编号>20011</编号><位置>长江路</位置></路灯></道路>
elevenDTD.dtd§3.5.3属性类型_3.NMTOKEN类型
3.NMTOKEN类型
如果属性的类型是NMTOKEN类型的属性,属性值可以由字母、数字、下划线(“_”)、点(“.”)或连字符(“-”)组成,属性值中不能含有空格字符(属性值也可以用数字、点或连字符开头)。例题3-11page49!ELEMENT作家名单(姓名*)><!ELEMENT姓名(#PCDATA)><!ATTLIST姓名笔名NMTOKEN#IMPLIED>例子12example3_12.xml<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPE作家名单SYSTEM"twelveDTD.dtd"><作家名单><姓名笔名="仙山">张三</姓名><姓名笔名="桃李">李陶</姓名></作家名单>twelveDTD.dtd§3.5.3属性类型_4.NMTOKENS类型
4.NMTOKENS类型
对于NMTOKEN类型的属性,其属性值中不能含有空格。如果需要某个属性的属性值含有空格,而且被空格分隔开的子字符串符合NMTOKEN类型属性的属性值之规定,那么就可以将属性的类型取为NMTOKENS类型.例题3-14page50<!ELEMENT图书列表(图书*)><!ELEMENT图书(名称,出版社)><!ELEMENT名称(#PCDATA)><!ELEMENT出版社(#PCDATA)><!ATTLIST图书关键字NMTOKENS#REQUIRED>例子13example3_13.xml<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPE图书列表SYSTEM"thirteenDTD.dtd"><图书列表><图书关键字="XML可扩展语言解析器"><名称>XM基础教程</名称><出版社>清华大学出版社</出版社></图书><图书关键字="Java类对象线程"><名称>Java程序设计</名称><出版社>清华大学出版社</出版社></图书></图书列表>thirteenDTD.dtd§3.5.3属性类型_5.ID类型
5.ID类型如果希望某个属性的属性值具有专用性,即不允许其它类型相同的属性再取这个属性值,那么就可以将属性的类型取为ID类型。注意①ID类型的属性值可以由字母、数字、下划线(“_”)、点(“.”)或连字符(“-”)组成,但必须以字母或下划线开头。②需要特别注意的是ID类型属性的“默认值情况”只能是“#REQUIRED”和“IMPLIED”
例题3-14page51“默认值情况”是错误的×<!ATTLIST汪想地址IDFIXED"北京市"><!ATTLIST辛望地址ID"清华大学">默认值情况”是正确的√<!ATTLIST汪想地址ID#REQUIRED><!ATTLIST辛望地址ID#IMPLIED"><!ELEMENT城市交通(公交电车,公交汽车)><!ELEMENT公交汽车(名称*)><!ELEMENT公交电车(名称*)><!ELEMENT名称(#PCDATA)><!ATTLIST名称车牌号ID#REQUIRED>例子14example3_14.xml<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPE城市交通SYSTEM"fourteenDTD.dtd"><城市交通><公交电车><名称车牌号="辽B555">101无轨电车</名称><名称车牌号="辽B888">201有轨电车</名称></公交电车><公交汽车><名称车牌号="辽B666">801快车</名称><名称车牌号="辽B777">631普通</名称></公交汽车></城市交通>fourteenDTD.dtd图3.11使用解析器检查出的错误§3.5.3属性类型_6.IDREF类型
6.IDREF类型
如果准备通过标记的属性值来判断标记之间的联系,就可以在标记中使用IDREF(IdentifierReference)类型的属性。IDREF类型属性的属性值只能取某个标记中ID类型属性的属性值。例题3-15page52<!ELEMENT简历列表(专科,本科,硕士,博士,姓名*)><!ELEMENT专科EMPTY><!ELEMENT本科EMPTY><!ELEMENT硕士EMPTY><!ELEMENT博士EMPTY><!ELEMENT姓名(#PCDATA)><!ATTLIST专科numberCodeID#REQUIRED><!ATTLIST本科numberCodeID#REQUIRED><!ATTLIST硕士numberCodeID#REQUIRED><!ATTLIST博士numberCodeID#REQUIRED><!ATTLIST姓名学历IDREF#REQUIRED>例子15example3_15.xml<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPE简历列表SYSTEM"fifteenDTD.dtd"><简历列表><专科numberCode="A101"/><本科numberCode="B102"/><硕士numberCode="C201"/><博士numberCode="D202"/><姓名学历="A101">张三</姓名><姓名学历="D202">李四</姓名><姓名学历="B102">赵五</姓名><姓名学历="C201">孙六</姓名></简历列表>fifteenDTD.dtd
§
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 思科端口安全官方
- 反腐倡廉警示教育心得体会
- 2024年度0KV变电站工程招投标代理合同
- 2024年度企业购销合同范本
- 2024年度新能源项目合作合同标的合作模式与投资回报
- 2024年度代理出租房屋合同
- 999感冒灵年度微博代运营-投标方案
- 2024年度光伏项目开发建设合同
- 2024年度物业管理系统定制开发合同
- 2024年度光伏项目建设与运营合同
- 设计行业设计安全培训
- 《脑血管疾病的护理》课件
- 科技畅想未来主题班会 课件
- 储气罐保养记录表
- 计算思维与程序设计
- 境外安全管理培训(海外)课件
- 《应对同伴压力》课件
- 小学生自主学习能力培养及教师指导策略
- 振动试验及振动试验设备培训
- 气切换药课件
- 高二数学双曲线试题(有答案)
评论
0/150
提交评论