《【教学课件】第二章XML语言.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第二章XML语言.ppt(133页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第二章XML语言q第一节第一节 XML XML概述概述q第二节第二节 XML XML语法语法q第三节第三节 DTD DTDq第四节第四节 Schema Schemaq第五节第五节 Namespace Namespaceq第六节第六节 XSL XSLq第七节第七节 XML XML的应用的应用q第八节第八节 其他其他如何表示信息?序号序号书名书名出版社出版社出版日期出版日期售价售价1国民党研究续集国民党研究续集 中国友谊出版公司1999-01-0111.4元2李敖议坛衰思录李敖议坛衰思录 中国友谊出版公司2009-01-0131.6元3李敖作品精选李敖作品精选-为中国思想趋向为中国思想趋向求答案求
2、答案 中国友谊出版公司2001-04-012.7元4李敖送电集李敖送电集:李敖著李敖著 中国友谊出版公司2004-01-0111.4元5李敖有话说李敖有话说.7 中国友谊出版公司2007-10-3019.3元6李敖有话说李敖有话说6 中国友谊出版公司2007-07-0122.0元7李敖有话说李敖有话说5 中国友谊出版公司2007-05-1117.3元8李敖生死书李敖生死书:我们没有明天我们没有明天 中国友谊出版公司2006-12-0119.8元9只爱一点点只爱一点点:从万宝囊到臭屎堆从万宝囊到臭屎堆 中国友谊出版公司2006-12-019.9元10李敖有话说李敖有话说4 中国友谊出版公司200
3、6-08-0124.6元如何表示信息?如何表示信息?计算机可读懂的信息表示TCP/IP格式计算机与人均可读的信息表示 国民党研究续集中国友谊出版公司1999-01-0111.4元 李敖议坛衰思录中国友谊出版公司2009-01-0131.6元 李敖有话说中国友谊出版公司2007-01-0111.4元 演示演示:http:/SRW/qhttp:/ XML:eXtensible Markup Language中文译为“可可扩扩展展标标记记语语言言”,是用于标记电子文件使其具有结构性的标记语言。是SGML(Standardgeneralizedmarkuplanguage)的一子集.q标记标记读书时,
4、为了突出重点,可以用彩色笔把某些句子加亮,或者下划线。文字编辑器借助置标来定义格式与外观通信程序依靠置标理解所传输信息的语意数据库通过置标来将数据字段与一定的含义相连,并表明字段之间的关系q标记语言标记语言一种用来给文本添加标记的语言。q置标用标记语言对数据进行编码的过程。qGMLGML(Generalized Markup LanguageGeneralized Markup Language)2 0世纪6 0年代,I B M公司创建了第一个标识文档的通用标记语言GML。最初,GML只被用于IBM内部文档。qSGMLSGML随着众多企业采用GML,它被扩展为标准通用标记语言SGMLSGML(
5、Standard Generalized Markup Language)。1986年,国际标准化组织把SGML确定为ISOhttp:/SGML特点SGML包含一系列的文档类型定义(简称DTD)SGML是可以扩展;SGML十分复杂,不易学习使用,计算机实现也十分困难。qHTML1989年,欧洲核子物理研究中心在SGML基础上提出HTML(HyperTextMarkupLanguage)。HTML包含一组事先定义好的标签,每个标签表明一定的显示格式。例如:被置标后的HTML文件,同时包含文本及文本显示格式信息。HTML文件由专门处理工具进行读取、显示。qHTML特点HTML只使用SGML中很小一
6、部分标签HTML规定的标签是固定的,不可扩展,它不需包含DTD。HTML简单、易学易用HTML使 Web 技术从计算机界走向千家万户从从从从SGMLSGML到到到到HTMLHTML,从,从,从,从MARCMARC到到到到DCDC,从,从,从,从Z39.50Z39.50到到到到SRUSRUqW3C推出精简SGMLXMLHTML过于简单的语法无法表现复杂的形式,不能满足不断增长的需求。SGML太庞大,用户学、用不方便,且要全面实现SGML的浏览器又非常困难。qXMLXMLXML是一种比HTML更强大的标记语言XML同样依赖于描述一定规则的标签和能够读懂这些标签的处理工具。XML是可扩展的标记语言与
7、HTML事先定义好固定标签不同,XML提供一个标签标准,用户可以根据实际需要自行定义新的标签。qXML目标目标在互联网上直接使用(类似于HTML)。支持各种不同的应用方式(浏览、内容分析)。与SGML兼容(SGML是XML的直接先驱)。处理XML文件的应用程序应该容易编写。XML文件具有良好的可读性(HTML的易读性很差)。用XML设计新的标记语言应该方便快捷(不必再去经历标准制定程序)XML文件应该容易编制(借助普通编辑工具就能编写)。XML标记的简洁性并不重要(不必再去费尽心机减少标记)。qXMLXML19981998年年XML1.0XML1.0成为成为W3CW3C推荐标准推荐标准 XML
8、 1.0(Fifth Edition)XML 1.0(Fifth Edition)第一节、XML概述qXML简史qXMLXML组成组成qXML的优点XML文档组成q三部分三部分 标记描述标记描述 XML XML数据文件数据文件(.XML)(.XML)置标语法置标语法 DTD/Schema DTD/Schema文件文件(.DTD/.XSD)(.DTD/.XSD)置标含义置标含义 XSL XSL文件文件(.XSL)(.XSL)XMLDTD/XSDXSL理解结构获得语义XML标记描述q分两类一类偏重于语意描述XML看上去和HTML非常相象,但XML标签具有语义,支持相关工具的语义解析。一类偏重于显示
9、方式描述,包括:文本描述矢量图形、图象、声音描述等 张三 001 A公司 电话 五街1234号 北京 北京 100001.XMLXMLXMLXML标记文档实例标记文档实例标记文档实例标记文档实例置标语法qDTD(Document Type Definition)置标语法是通过文件类型定义DTD来描述的,即通过DTD来描述什么是有效的标签。DTD语法定义文件与XML数据标记文件是分离的。DTDDTDDTDDTD文档文档文档文档:contact.dtd:contact.dtd:contact.dtd:contact.dtd 张三001A公司(010)62345678 北京 北京 五街1234号 X
10、ML标记文档标记文档:list.xml置标含义q样式单样式单(Style Sheet)Style Sheet)为明确各个标签含义,XML使用样式单来向应用程序提供如何处理显示的指示说明。F公司的客户联系信息用户ID:公司:EMAIL:电话:样式单实例q将XML文档中的标签转换为HTML中的标签;q将XML文档中的、等标签转换为HTML中的标签。XML核心内容核心内容XML SpecificationW3C推荐标准,定义XML基本语法规范XML Namespace提供一种统一命名XML文档中的元素和属性的机制,避免来自不同标记词汇表的元素和属性之间冲突。XML Schema:用于定义和描述XML
11、文档结构和内容模式,定义元素和元素之间的关系,定义元素和属性的数据类型。XML SpecificationXML Schema(DTD)XPathXSLXLinkXML NamespaceDOMSAXDOM4JApplicationXML应用体系结构应用体系结构第一节、XML概述qXML简史qXML组成qXML的优点XML的优点q可以自由地制定自己的置标语言可以自由地制定自己的置标语言不必由有关的组织认可,不必开发专用的浏览器;允许各个组织、个人建立适合他们自己需要的标记库,并且,这个标记库可以迅速地投入使用。XML的优点q从语义层次进行描述从语义层次进行描述便于修改便于检索便于处理q遵循严格
12、的语法要求遵循严格的语法要求便于书写、阅读便于借助工具自动化处理XML的优点q便于不同系统之间信息传输便于不同系统之间信息传输可以标注多种信息类型文字、图像、二进制文件等XML的优点q具有较好的保值性具有较好的保值性XML的保值性来自SGML语言,SGML最初设计目标是要为文件提供50年以上寿命。电子文档的虽然能长期保存,但也存在隐患,处理软件升级导致打开文档的困难性。如五十年以后,人们可能没有工具去打开用Word97写的文档。XML与HTML的比较 比较内容比较内容HTMLXML可扩展性可扩展性不具有扩展性支持定义新的置标语言侧重点侧重点如何表现信息如何结构化地描述信息语法要求语法要求不要求
13、标记的嵌套、配对等严格要求嵌套、配对,和遵循DTD的树形结构可读性及可维护性可读性及可维护性难于阅读、维护结构清晰,便于阅读、维护数据和显示的关系数据和显示的关系内容描述与显示方式整合为一体内容描述与显示方式相分离保值性保值性不具有保值性具有保值性编辑及浏览工具编辑及浏览工具比较多相对少第二章XML语言q第一节第一节 XML XML概述概述q第二节第二节 XML XML语法语法q第三节第三节 DTD DTDq第四节第四节 Schema Schemaq第五节第五节 XML XML命名空间命名空间q第六节第六节 XSL XSLq第七节第七节 XML XML的应用的应用q第八节第八节 其他其他第二节
14、XML语法qXML规则q逻辑结构q物理结构参考资料:参考资料:XML Specification ()XML规则q基本规则基本规则XML文档是由Unicode字符集组成的纯文本文档。XML文档具有良好结构。XML文档区分大小写。标记之间信息构成字符数据。XML处理器不关心字符数据。XML可为各种对象、应用程序定义语法和文件格式。XML规则q格式良好性规则格式良好性规则XML 文档结构定义文档结构定义遵循遵循XML 规范规范基于XMLSpecification规范构建的XML文档被称为“具有良好格式的XML文档”。自定义自定义由文档作者自行创建结构文档“DTD”或“XMLSchema”;XML处
15、理器按照这个文档中的定义规则进行检验。XML规则q格式良好性规则格式良好性规则(1)有且仅有一个根元素。)有且仅有一个根元素。根元素也称文档元素,整个XML文档的其他元素都包含在根元素中,并通过嵌套形成树型结构。除了根元素外,其他元素都是子元素。(2)每个元素必须有开始标记和结束标记)每个元素必须有开始标记和结束标记开始标记的格式是:结束标记的格式是:空元素标记:空元素标记:XML规则q格式良好性规则格式良好性规则(3)元素必须正确嵌套)元素必须正确嵌套元素嵌套时不允许交叉,最先出现开始标记的元素,其结束标记最后出现。(4)所有属性值必须放在双引号或单引号中。)所有属性值必须放在双引号或单引号
16、中。(5)如果文档没有)如果文档没有 DTD,在缺省情况下,所有属性值的类型必,在缺省情况下,所有属性值的类型必须是须是“CDATA”。q有效性规则有效性规则 如果XML文档中元素出现的个数、顺序以及元素包含的内容都符合DTD或XMLShema规则,则该文档就是有效的。一个DTD或XMLShema可以被多个XML文档共享,既保证了XML文档结构的标准化,又大大减少编写代码的工作负担。DTDXMLXMLXMLXML规则q命名规则命名规则所有XML命名都必需以字母、下划线或冒号开头。用作命名空间时才以冒号做分隔符。如:dc:title保留字用户不使用如:“XML”、“xml”XML规则第二节、XM
17、L的语法qXML规则q逻辑结构q物理结构XML文件的逻辑结构qXML文档组成文档头部文档头部声明注释处理指令文档类型定义文档主体文档主体由一个或多个元素组成;每个元素可以有子元素。张三 001 A公司 (010)62345678 XML实例12345XML6XML是一种可扩展的源置标语言,它可用以规定新的置标规则,并根据这个规则组织数据789!CDATA1011张三1213141516说明1-2是序言316是文件中的各个元素。5行:“”“”是标记,“XML”是字符数据。8是注释913是CDATAXML文档头部q文档头部可以包括声明注释处理指令文档类型定义XML文档头部q(1 1)XML XML
18、 声明声明一个 XML 文档通常以一个XML声明开始,它指明XML版本等信息,必须出现在XML文档的第一行。XML声明的作用就是告诉XML处理程序:“当前文件是按照XML标准对数据进行置标的”。XML文档头部q(1 1)XMLXML声明声明语法格式?xml?实例XML文档头部q(1 1)XMLXML声明声明属性VersionVersion:必备属性:必备属性XML版本号,必须在属性列表中排在最前列。由于当前的XML最新版本是1.0,所以:version=“1.0”StandaloneStandalone:可选属性:可选属性表明该XML文件是否还有一个配套置标声明文件Standalone=Sta
19、ndalone=“yes”:表示没有配套的DTD文件;Standalone=Standalone=“no”,可能有这样一个文件(也可能没有)缺省为:Standalone=Standalone=“no”EncodingEncoding:可选属性:可选属性表明XML文档使用的字符编码标准,常见的有:简体中文码:GB2312 繁体中文码:BIG5 西欧字符:UTF-8q(2)处理指令)处理指令(PI,ProcessingInstruction)指导应用程序如何处理XML文件,格式:?处理指令名 处理指令信息?用于连接CSS样式单的PI格式?xml-stylesheet 用于连接XSL样式单的PI格式
20、?xml-stylesheetXML文档头部q(3)注释)注释XML中使用注释对文档进行解释说明,增加程序的可读性,处理程序不对注释标记的内容进行处理。语法XML文档头部q(3)注释)注释使用注释规则注释不能出现在声明之前注释可以包容标记,使标记失去作用注释不能出现在标记中注释内容中不能包含“-”以下是合法注释:!-XML文档头部q(4)文档类型定义)文档类型定义语法:要求:文档类型定义必须出现在根元素标记符前面。实例:!DOCTYPE 联系人列表 张三 XML文档头部文档主体q文档主体组成文档主体组成一个文档元素(根元素)多个子元素也可以有PI和注释元素qXMLXML元素元素一个元素包含一个
21、起始标记、一个结束标记以及标记之间的数据内容。标记数据内容标记数据内容/标记标记元素中还可以再嵌套子元素,例如:张三 元素标记q元素标记元素标记基本形式”例如:q 元素标记命名规则元素标记命名规则(1)以字母或下划线开头,后跟字母、数字、下划线、横线和圆点等,不能包含空格,不能以字符串“xml”作为开头。下面是合法的XML标记名称:、下面是非法的XML标记名称:有空格有空格 以数字开头以数字开头 有非法字符有非法字符”&”&”(2)标记是大小写敏感的 q 空元素标记空元素标记 正常方式 简便方式 元素属性qXML元素属性属性不影响元素树型结构、并提供附加的上下文。属性格式:例如:title l
22、anguage=“元素属性举例:王芳李奇黄昂扬文笛声q属性定义规则属性定义规则标记中可以使用多个属性,但属性名称不得重复;属性名是大小写敏感的;属性只能出现在起始标记或空标记中;属性值必须用引号(英文);少用属性,尽可能用子元素。因为属性有以下缺陷:少用属性,尽可能用子元素。因为属性有以下缺陷:属性值不能包含多重数值,但是元素可以;属性值很难扩展;属性不能描述结构内容,但是元素可以;属性值很难通过DTD进行测试。字符数据q字符数据字符数据在起始和结束标记之间出现的字串信息为字符数据。张三张三/以下是两条不同的字符数据:一段文字 和:格式一段文字/格式 后者的文本数据比前者多了两个换行符。字符数
23、据可以是任何合法的UNICODE字符,但不能包含“”等特殊字符。q特殊字符数据表示法一:实体引用特殊字符数据表示法一:实体引用为了在字符数据和标记中使用一些特殊符号,XML提供了实体引用法:特殊字符实体引用>B,则B一定是偶数”正确XML表示形式:加入A>B,则B一定是偶数属性值中的特殊字符错误写法:正确写法:字符数据q特殊字符数据表示方法二:特殊字符数据表示方法二:CDATACDATA格式 CDATA文本内容中是不能出现字符串“”,因为它代表了CDATA数据块的结束标志。CDATA下所有内容都被当作字符数据看待。字符数据qCDATA与实体引用比较CDATA表示方式!CDATA张三
24、实体引用表示方式<姓名>张三</姓名>字符数据qXMLXML注释注释用“”引起来可以是多行,但不允许出现嵌套字符串“-”、“”不能出现在注释中例子:!-HTML XHTML SGML-XML注释第二节、XML的语法qXML基本规则q逻辑结构q物理结构XML文件的物理结构q什么是实体什么是实体一个XML文件可能由一个或多个存储单元组成,它们被称为实体(entity),它们都具有内容并且都用名字进行标识。类似程序设计中的变量,每个变量可存放一定数据。实体充当着和别名类似的角色,一个简单的实体名称可以用来代表一大段文本内容。实体类型:一般实体参数实体实体声明q一般实体声明内部
25、实体!ENTITY 实体名“文本内容”例如!ENTITY lettersign“张三某网络公司销售部门北京市海淀区中关村88号,100000”q一般实体声明外部实体!ENTITY 实体名 SYSTEM“地址”例如:!ENTITY lettersignSYSTEM http:/实体声明实体声明q参数实体参数实体参数实体的格式与一般实体很类似,只不过中间要加上“%”符。!ENTITY%实体名 文本内容 参数实体既可以是内部的也可以是外部的,参数实体只用在DTD中。实体声明 q实体声明规则实体声明规则实体声明应该放在文件类型DOCTYPE中。DOCTYPE一般放在文件头之后、XML元素之前。例如:!
26、DOCTYPE 文件根元素名 实体引用 q指引用一个已经声明过的实体。一般实体引用形式:&实体名实体名;例如:&NSLAddress;参数实体引用形式:%实体名;实体名;例如:例如:!%short;实体引用q实体引用规则实体引用规则 被引用的实体必须已经在XML文件中声明过;实体引用中不能出现空格:错误引用:&lettersign;&lettersign;和和&lettersign;&lettersign;在一个实体中可以再引用其它实体,但是不能出现循环引用。实体引用不能在DOCTYPE声明中出现。一般实体声明和引用例子一般实体声明和引用例子!DOCTYPE 联系人列表 张三 A公司&A公司地
27、址;李四 B公司&B公司地址;/地址 实体声明实体引用参数实体声明与引用实例参数实体声明与引用实例!%short;实体声明实体引用q实体引用规则实体引用规则实体引用不仅可以出现在字符数据中,还可以出现在标记的属性中。例如:属性中实体引用规则:在标记属性中不能引用一个外部实体。引用的文本中不能出现字符“”。实体引用第三节DTD第三节DTDqDTD基本结构q定义元素及其后代q定义元素属性DTD基本结构qDTDDocumentTypeDefinition规定XML文档的逻辑结构,主要是来描述XML文件中元素的格式。它可以定义文档的语法,以便支持XML语法分析程序根据DTD确认某个XML页面标记的合法
28、性。qDTD特点特点DTD描述了一个置标语言的语法和词汇表,即定义了XML文件的整体结构及语法。编辑工具根据DTD中定义的结构创建XML文档XML解析器利用DTD定义验证文档的有效性。DTD可以非常简单,仅仅列出所有有效的元素DTD也可以非常复杂,除元素,还可以指出元素之间的关系。DTD基本结构DTD的基本结构qDTD特点特点DTD中的关键字都必须是大写的例如:ELEMENT、ATTLIST、#REQUIRED、#IMPLIED、NMTOKEN、ID等等。DTD所定义的元素和属性名是大小写敏感例如“BOOKS”和“Books”并不相同。DTD的基本结构qDTD类型类型内部DTD外部DTD公用D
29、TD内部DTDq内部内部DTDDTD定义的信息放在XML文档中,加在XML文件头部,结构如下:!DOCTYPE .内部DTD实例!DOCTYPE 联系人列表 张三 A公司 (010)62345678 北京市 五街1234号 外部DTDq什么是外部什么是外部DTDDTDDTD信息保存在XML文件之外的一个独立文件中。优点多个XML文件共享一个共用DTD文件简化输入,改动DTD不用一一去改每个XML文件缺点如果DTD的改动不是“向后兼容”的,这时原先写的那些XML文件可能就会出问题。外部DTDq外部外部DTDDTD引用引用XML声明中必须说明这个文件不是自成一体的,即standalone属性值应该
30、是“no”。在DOCTYPE声明中,要加入SYSTEM属性:外部DTDq例子 URL可以是绝对路径,也可以是相对路径 公共DTDq什么是公共什么是公共DTDDTD以关键字PUBLIC而不是SYSTEM来引用一个由权威机构制订的、提供给特定行业或公众使用的DTD,这个外部DTD还需要得到一个标识名。公共DTD的引用形式!DOCTYPE URL例如 第三节DTDqDTD基本结构q定义元素及其后代q定义元素属性qDTD 规范内容规范内容1.DTD声明2.元素的定义规则及相关信息3.属性的种类及其使用4.定义元素之间的关系、元素的排列方式5.定义实体机制及其引用元素类型声明q声明XML文件的根元素、文
31、件内容和结构使用元素类型声明(ETD)来声明所有元素。定义元素名字、类型一个XML元素可以为空,也可以是一段纯文本,还可以有若干个子元素,而这些子元素同时又可以有它们的子元素。DTD通过元素之间的父子关系,描述整个文件的结构关系。元素类型声明qETDETD格式格式例如:!DOCTYPE !DOCTYPE 联系人列表联系人列表 !ELEMENT ANY 纯文本信息说明联系人信息 元素类型声明q其他元素其他元素为了使元素“联系人列表”中还可以包含其它元素,还需要定义元素“联系人”和“姓名”。例如:!DOCTYPE!DOCTYPE 联系人列表联系人列表 !ELEMENT !ELEMENT )!ELE
32、MENT (#PCDATA)张三 根元素名为根元素名为“联系人列表联系人列表”;“联系人列表联系人列表”中可以包含子元中可以包含子元素素“联系人联系人”,也可以包含任何,也可以包含任何纯文本数据纯文本数据(这即是(这即是ANY的含的含义)义);“联系人联系人”元素有且只有一个自元素有且只有一个自己的子元素己的子元素“姓名姓名”;“姓名姓名”元素只能包含纯文本数元素只能包含纯文本数据(即据(即(#PCDATA))元素类型声明q错误的例子:!DOCTYPE 联系人列表 张三“联系人”、“姓名”元素没有定义。元素类型声明q注意事项注意事项除了根元素外,在定义其它元素时使用关键字ANY都是不好的习惯,
33、让人不知所措在定义元素时,ETD的顺序是无关紧要的。因此:和 所定义的文件结构是完全相同的元素类型声明q注意事项注意事项不能对不同的元素使用相同的元素名。例如:在这个例子中,对“联系人”的重复定义,会引起错误。定义元素及其子元素q举例举例下例中,我们定义了一个名为“联系人”的元素,它包含一个单独的子元素“姓名”,“姓名”元素包含字符数据:!DOCTYPE!DOCTYPE 联系人列表联系人列表 !ELEMENT ANY!ELEMENT )!ELEMENT (#PCDATA)张三 定义元素及其子元素qDTDDTD支持灵活的元素定义支持灵活的元素定义DTD可以对一个元素作如下任何一种类型的定义:有一
34、个子元素;有一个或多个子元素有零个或多个子元素至少有一个子元素有一个或多个子元素Y,或一个子元素Z。不要求顺序的子元素q空格分离的元素不限顺序如DTD:有效的XML:张三 有效的XML:张三要求顺序的子元素 q逗号“,”分隔元素要求顺序DTD:有效XML:张三张三/无效XML:张三张三/重复元素q“+”:重复元素DTD:说明一个“联系人”元素中必须含有一个“姓名”元素,后面接一个或多个“EMAIL”元素。有效XML 张三张三/重复元素q“*”:“”:“零个或多个零个或多个”元素元素DTDDTD )有效有效XMLXML 张三张三/或者 张三张三/成组元素q括号:元素组括号:元素组DTDDTD 说
35、明说明子元素可以使用括号并为一组。上面DTD片段说明,一个“联系人”元素中可以有一个或多个“姓名/EMAIL”子元素对,并且在每个子元素对中,“姓名”都放在“EMAIL”之前。有效有效XMLXML 张三张三/李四李四/王五王五/OR或q符号“|”:任选一DTD规定:!ELEMENT 所有的“联系人”元素应该有一个“姓名”子元素,之后还应该有一个“电话”或一个“EMAIL”元素,但不能同时有“电话”和“EMAIL”两个元素。下面是无效XML(因为缺少电话或EMAIL)张三OR或q符号“|”:任选一DTD规定:!ELEMENT 下面还是无效XML(因为不能同时有电话和EMAIL)张三 123456
36、78 OR或q符号“|”:任选一DTD规定:!ELEMENT 下面还是无效XML(姓名应放在EMAIL前)张三OR或q符号“|”:任选一DTD规定:!ELEMENT 有效XML文件 张三张三/1234567812345678 或者是:张三张三/OR或q注意事项注意事项在一个组中,只允许使用一种连接符(例如“,”或“|”)。下面DTD是不合法的:!ELEMENT|EMAIL)要想使用多种连接符,只有通过创建子元素组的方式,例如:!ELEMENT|EMAIL)可选子元素q符号符号“?”“?”:可选子元素:可选子元素 例如:?)上面DTD定义:每一个“联系人”都必须有一个“姓名”子元素,同时或者有一
37、个“电话”或者有一个“EMAIL”子元素,此外,它还可以包含一个“地址”子元素,也可以不包含这个元素。可选子元素q符号符号“?”“?”:可选子元素:可选子元素 !ELEMENT?)q有效有效XMLXML 张三 五街五街12341234号号/北京市北京市/北京北京/或者或者 张三张三/混合内容q在一个元素中既包含子元素,也包含纯文本。例如:!DOCTYPE 联系人列表 ,EMAIL,#PCDATA)*张三张三/(010)62345678(010)62345678 这是关于张三的信息这是关于张三的信息 注意注意由于在“(姓名,电话,EMAIL,#PCDATA)”之外有“*”,所以在元素“联系人”中
38、可以包含零个或多个“姓名”、电话、EMAIL和纯文本字段。空元素q空元素空元素一个元素中不包含任何子元素,也不包含纯文本。格式:EMPTY 说明:在XML文件中可以使用一个元素:定义元素及其子元素q正则表达式正则表达式元元 字字 符符含含 义义+出现一次或多次*出现零次或多次?可选,不出现或出现一次()一组要共同匹配的表达式|OR,或,AND,要求严格遵从顺序要求元素A元素B元素C元素列表,无须遵从顺序要求第三节DTDqDTD的基本结构q定义元素及其后代q定义元素属性如何定义元素的属性q属性实例属性实例 假如在XML文档中,“商品”元素有两个属性:“类型”、“颜色”:”如何定义元素的属性qDT
39、DDTD属性定义格式属性定义格式:!ATTLIST*例子:例子:!ATTLIST 元素名:属性所属的元素名字,上面例中元素名是“商品”属性名:上例中属性名分别为“类型”、“颜色”属性类型:指定该属性是属于十个有效属性类型中的哪种类型缺省值:如果没有指定值,语法分析器默认它具有的取值如何定义元素的属性q注意事项注意事项ATTLIST是一个属性的列表,它可以包含多个属性。同一属性可以多次声明,首先执行第一个。一些元素带有多个属性,通过多个声明实现属性缺省值q属性的缺省值可分三类 REQUIRED:必须赋值的属性说明XML文件中必须为这个属性给出一个属性值。IMPLIED:属性值可有可无的属性文法解
40、释器不再强行要求你在XML文件中给该属性赋值,而且也无须在DTD中为该属性提供缺省值。FIXED:固定取值的属性为一个特定的属性提供一个缺省值,并且不希望XML文件的编写者把缺省值替代掉。定义缺省值的属性如果不使用上面任何一种关键字来定义属性,需要在DTD中为它提供一个缺省值。而在XML文件中可以为该属性给出新的属性值来覆盖事先定义的缺省值。属性定义实例属性类型q属性类型可以是以下十种中的任意一种:CDATA Enumerated ID IDREF IDREFS ENTITY ENTITIES NMTOKEN NMTOKENS NOTATION属性类型CDATA q纯文本纯文本,即由字符、符号
41、“&”、小于号“”和引号“”组成的字符串。q例子:!DOCTYPE 剧本 我可不这么认为!为什么呢?属性类型枚举类型q属性也可以被描述为一组可接受的取值的列表,关键字ENUMERATED是不出现在DTD定义中的。!DOCTYPE 购物篮 属性“类型”定义的缺省值是“鸡肉”,所以“购物篮”中的第三个元素的“类型”属性取值为“鸡肉”属性类型IDqID ID 类型类型元素的某些属性值是不能重复的ID的值必须是一个有效的XML名称注意不要给ID类型的属性事先指定缺省值,这很容易引起不同的元素具有相同的标识的情况;ID属性经常使用REQUIRED缺省类型,也可以使用IMPLIED缺省类型,但不能使用FI
42、XED缺省值。实例实例 !DOCTYPE 联系人列表 张三 李四 属性类型IDREF/IDREFS q允许一个元素的属性使用文件中的另一个元素,方法就是把那个元素的ID标识值作为该属性的取值。qIDREF/IDREFS适用于多对一、一对多。实例!DOCTYPE 联系人列表 张三 李四 属性类型NMTOKEN/NMTOKENSq为XML数据处理操作指定一个操作方法(如一个java类),例如:DTD定义:XML文件:blahblahblah属性类型NOTATIONqNOTATIONNOTATION类型类型允许属性值为一个允许属性值为一个DTDDTD中声明的符号中声明的符号,这个类型对于使用非XML格式的数据非常有用,如图象、声音、影象等等。对于这些数据,XML应用通过为它设定NOTATION类型属性,可以向应用程序指定一个外部处理程序。定义方法使用MIME类型:”使用一个URL路径(指定一个处理程序):”实例 !DOCTYPE 文件 为“电影”元素指定了两种可选设备:movPlayer.exe用来播映.mov文件另一种则用来绘制GIF图象。属性类型Entitiesq实体属性!ATTLIST 实体内部实体 外部实体实体引用&实体名称;实例 !DOCTYPE 文件