- 1、本文档共6页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
一、编写DTD:通用原则 XML文档由元素和属性组成。元素内容可通过其它元素或XML基本类型定义。
DTD是文档要关联的,文档中应用包含一条用于与DID建立关联的指令。当XML解析器读取到该指令时,将获取DTD,并根据其中定义的规则对文档进行校验。
1、DOCTYPE标记: DOCTYPE声明用于将DTD与文档关联,应放在XML声明之后但在任何文档元素之前。中间可插入注释和其它指令。
格式:
外部声明:DOCTYPE 文档根元素 可选的外部标识符外部标识符包括(指明外部DTD源的关键字和DTD文件位置)两种指明外部DTD源的关键字:a-1、SYSTEM: 解析器将根据其后的URL来定位DTD文件的位置。!DOCTYPE Catalog SYSTEM “http://myservers/decs/Pubcatalog.dtd”a-2、PUBLIC: 用来声明公共的,众所周知的DTD,如一些标准组织定义的。解析文档的应用程序可能会根据若干策略来定位DTD,如:从数据库中,或与应用程序相关的技术获得。或应用程序有本地的拷贝。
Eg:!DOCTYPE Catalog PUBLIC “universal/Publishing/Book” “/Publishing/Pubcatalog.dtd” 前面的URI为公共的URI,由处理文档的应用程序由某种策略获取DTD,若失败,从后面的URL获取DTD。
内部子集声明:DOCTYPE 文档根元素 可选的标记声明块eg: !DOCTYPE catalog […internal subset declarations here…]注:可同时混合使用内部DTD和外部DTD,但两都出重复的声明时,内部的声明替换外部的声明。
2、DTD关键字:
ELEMENT 元素类型声明
ATTLIST 属性类型声明
ENTITY 实体声明,该声明内容可重用
NOTATION 不需要处理的外部内容的格式声明,以及处理外部内容的应用程序 2-1:实体:为避免将标记文本与实体名字混淆,引用实体时的格式为:
实体名字;
预定义实体:
对于一些不可打印字符,及用于XML标记的保留字符,XML提供了一些预定义的实体:
lt; lt; amp; ‘ apos; “ quot;
通用实体:(不能包含对自身的引用)
最简单的实体形式,它能够声明与某个名字相关联的可解析的文本块
Eg: !ENTITY copyright “zqw , inc, 2009 ”
引用:copyright; 注----实体名字与定界符 ;间不能够有空格。
当然,通用实体也有外部形式:即将置换文本放在外部文件中。
!ENTITY pub SYSTEM “xmldemo5.xml” SYSTEM用于指示外部源,而后面的URL用于指示文件的位置。
限制:属性值中不能引用可解析的外部实体,避免实体的字符编码与主文件编码不同
参数实体:
仅在DTD中使用的解析实体称为参数实体,它能让我们简便地引用和修改DTD中的常用的结构,我们只须要维护一处代码。
!ENTITY % peopleParameters “age CDATA #IMPLIED ”
参数实体必须在引用之前声明,意味着不能在内部DTD中引用外部DTD中声明的参数实体,因为解析器先读取内部DTD
引用参数实体: 定界符---- % ;(不再是 ;)
Eg: ATTLIST teacher %peopleParameters; sex CDATA #IMPLIED
注:在内部DTD中,参数实体的引用只能位于其它的声明之间
与通用实体类似,参数实体的替换文本也可位于外部文件中:
ENTITY % myparam SYSTEM “/myparam.txt”
2-2:元素
XML的核心和灵魂,通过标记ELEMENT声明的。
名称限制:字母、数字、标点符号:冒号、下划线、连字符(-)和句点(.)
第一个字符只能是字母、冒号和下划线。
四种类型:
空元素:不包含子元素、文本、但是可以有属性。
元素内容:只包含子元素,不包含文本。
复合内容:由子元素和可解析文本(#PCDATA)或文本的组合。
Eg: !ELEMENT FruitBasket (cherry, (orange|apple)) 注:orange与apple只能出现一
文档评论(0)