DTD总结
1 DTD:document type definition 1.1DTD XML构建模块 元素,实体,属性,PCDATA,CADTA. 元素:元素是xml与html的主要构建模块。如html的<head><body>等。元素可以是空元素,包含其他元素和属性。 实体:实体是用来定义普通文本的变量。实体引用用来对普通文本的引用。如大家熟悉的html中的 就是对“”空格的实体引用。在xml中有以下的预定义的实体引用。
PCDATA:parse character data按字面意思来解释就是可被解析的字符串。PCDATA可被看成是开始标签与结束标签之间的内容。其中的实体会被展开,标签会被当做标示处理。但PCDATA应被不包括<,>等符号,要使用这些符号请用实体引用代替。 CDATA:character data按字面意思来讲是字符数据,CDATA中的数据标签将不会当做标记,实体也不会展开。 1.2DTD元素 》DTD中声明一个元素 <!ELEMENT 元素名元素类别> 或 <!ELEMENT 元素名(元素内容> 元素类别可以是ANY 表示任意类型,EMPTY 表示空元素。 元素内容: 元素内容使用空白符分隔,表示出现顺序没有要求: <!ELEMENT MYFILE (TITLE AUTHOR EMAIL)> × 用逗号分隔,表示内容的出现顺序必须与声明时一致。 <!ELEMENT MYFILE (TITLE,AUTHOR,EMAIL)> 用|分隔,表示任选其一,即多个只能出现一个 <!ELEMENT MYFILE (TITLE|AUTHOR|EMAIL)> 在元素内容中也可以使用+、*、?等符号表示元素出现的次数: +: 一次或多次 (书+) ?: 0次或一次 (书?) *: 0次或多次 (书*) 也可使用圆括号( )批量设置,例 <!ELEMENT MYFILE ((TITLE*,AUTHOR?,EMAIL)* | COMMENT)> 通过()、空白、逗号、|组合n中类型的元素内容。 1.3 DTD属性 》属性声明:属性是对元素的额外说明 声明属性 属性声明使用下列语法: <!ATTLIST 元素名称 属性名称1 属性类型 默认值 属性名称2 属性类型 默认值 … > 元素名称定义是哪个元素的属性 属性类型可以是以下类型 常用:CDATA,枚举列表(en1|en2|en3…),实体Entity。
默认值:注意#FIXED value此处的value是让你提供一个固定的默认值 DTD 实例: <!ATTLIST 元素名称属性名称1 属性类型默认值> <!ATTLIST paymenttype CDATA "check"> XML 实例: <payment type="check" /> 1.3DTD实体 实体引用是对实体的引用,实体是用来引用普通文本和特殊字符的变量。 实体构成: 一个实体由三部分构成: 一个和号 (&),一个实体名称,以及一个分号 (;)。 实体引用由内部引用和外部引用: 一个内部实体声明 》引用实体定义 语法:<!ENTITY实体名称 "实体的值"> 引用方式:&实体名称;注意结尾有分号。 例子: DTD 例子: <!ENTITY writer "Bill Gates"> <!ENTITY copyright "Copyright W3School.com.cn"> XML 例子: <author>&writer;©right;</author> 》参数实体定义 语法: <!ENTITY % 实体名称 "实体内容"> 引用方式:%实体名称; 注意结尾有分号。 DTD 例子: <!ENTITY % TAG_NAMES "name| email | phone| address">
<!ELEMENT personInfo (%TAG_NAMES; | birthday)> <!ELEMENT customerInfo (%TAG_NAMES; | companyName)> DTD 例子2: <!ENTITY % common.attributes " id ID #IMPLIED accountCDATA #REQUIRED "> <!ATTLIST purchaSEOrder %common.attributes;> <!ATTLIST item %common.attributes;> 一个外部实体声明 语法: <!ENTITY 实体名称 SYSTEM "URI/URL"> 例子: DTD 例子: <!ENTITY writer SYSTEM"http://www.w3school.com.cn/dtd/entities.dtd"> <!ENTITY copyright SYSTEM"http://www.w3school.com.cn/dtd/entities.dtd"> XML 例子: <author>&writer;©right;</author> 1.4DTD验证 1.5DTD实例 》一个DTD的写法 <!DOCTYPE 文档根元素 [ <!ENTITY 实体名称 "实体的值"> … … … <!ELEMENT 元素名元素类别> … … … <!ATTLIST 元素名称 属性名称1 属性类型 默认值 属性名称2 属性类型 默认值 … > … … … ]> DTD实例例子1:全部看懂这个你就差不多都学会了,老实说DTD实在是太简单了 产品目录 DTD 拷贝自:http://www.vervet.com/ <!DOCTYPE CATALOG [ <!ENTITY AUTHOR "John Doe"> <!ENTITY COMPANY "JD Power Tools,Inc."> <!ENTITY EMAIL "jd@jd-tools.com"> <!ELEMENT CATALOG (PRODUCT+)> <!ELEMENT PRODUCT (SPECIFICATIONS+,OPTIONS?,PRICE+,NOTES?)> <!ATTLIST PRODUCT NAME CDATA #IMPLIED CATEGORY (HandTool|Table|Shop-Professional) "HandTool" PARTNUM CDATA #IMPLIED PLANT (Pittsburgh|Milwaukee|Chicago) "Chicago" INVENTORY (InStock|Backordered|Discontinued) "InStock"> <!ELEMENT SPECIFICATIONS (#PCDATA)> <!ATTLIST SPECIFICATIONS WEIGHT CDATA #IMPLIED POWER CDATA #IMPLIED> <!ELEMENT OPTIONS (#PCDATA)> <!ATTLIST OPTIONS FINISH (Metal|Polished|Matte) "Matte" ADAPTER (Included|Optional|NotApplicable) "Included" CASE (HardShell|Soft|NotApplicable) "HardShell"> <!ELEMENT PRICE (#PCDATA)> <!ATTLIST PRICE MSRP CDATA #IMPLIED WHOLESALE CDATA #IMPLIED STREET CDATA #IMPLIED SHIPPING CDATA #IMPLIED> <!ELEMENT NOTES (#PCDATA)> ]> 1.6在xml中引入xml约束 在xml中引入dtd文件的有两种声明方式: (1)内部定义的(定义在XML文件中), (2)外部引入的DTD文件(导入)。 <?xml version="1.0"?> <根元素> … … </根元素> (2)外部引入的DTD文件,用得最多。 这种方式又分为:私有方式、公共方式。 私有方式:<!DOCTYPE XML根元素的名称 SYSTEM "C:/test.dtd"> 私有方式最后写的是DTD的地址,也可以是一个URL地址。DTD文件并不是XML文档格式来写,DTD文件有自己的书写格式。私有方式关键字是SYSTEM。 公共方式:<!DOCTYPE XML根元素的名称 PUBLIC "ISO/+/-"> 公共方式最后的标示如果是经过ISO组织认证的用ISO进行标示,没有经过ISO但是经过行业内其他组织认证的用+,没有经过任何组织认证的用-。 "+//所有人的名称(谁来写的这个DTD文件)//DTD文档的说明" (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |