DTD简介 ■DTD本身是可选的 XML文档可以只是一个正规的文档 还有其他可以用来保证XML文档有效性的技术: Schema XML-Data DTD的内容和特征 对数据结构进行描述和确认 将这些数据结构传送给其他应用程序和人员 限制元素内容 限制属性类型和值,提供默认值 n对可置换内容实体Eny)进行描述和定义 可以有条件节
DTD简介 ◼ DTD本身是可选的 ◼ XML文档可以只是一个正规的文档 ◼ 还有其他可以用来保证XML文档有效性的技术: ◼ Schema ◼ XML-Data ◼ …… ◼ DTD的内容和特征: ◼ 对数据结构进行描述和确认 ◼ 将这些数据结构传送给其他应用程序和人员 ◼ 限制元素内容 ◼ 限制属性类型和值,提供默认值 ◼ 对可置换内容--实体(Entity)进行描述和定义 ◼ 可以有条件节
DTD简介 ■DTD结构 个文档只能与一个DTD相关联但是一个DTD可以 分成两部分:内部子集和外部子集 内部子集被包含于XML文档中 外部子集可以存放在以dta为后缀名的独立文件中 n当内部子集和外部子集存在声明冲突时,内部子集的 声明覆盖外部子集的声明 ■外部子集和内部子集的选择: 般情况尽量使用外部子集,便于修改和复用 下面情况下使用内部子集: 为了使用已经存在但不能完全满足我们需要的DTD,通过修 改和扩充该外部DTD 在DTD开发过程中进行测试
DTD简介 ◼ DTD结构: ◼ 一个文档只能与一个DTD相关联,但是一个DTD可以 分成两部分:内部子集和外部子集 ◼ 内部子集被包含于XML文档中 ◼ 外部子集可以存放在以dtd为后缀名的独立文件中 ◼ 当内部子集和外部子集存在声明冲突时,内部子集的 声明覆盖外部子集的声明 ◼ 外部子集和内部子集的选择: ◼ 一般情况尽量使用外部子集,便于修改和复用 ◼ 下面情况下使用内部子集: ◼ 为了使用已经存在但不能完全满足我们需要的DTD,通过修 改和扩充该外部DTD ◼ 在DTD开发过程中进行测试
DTD简介 个简例 ■ greeting.xm1: <?xml version=1.0?> <GREETING> Hello XM! </GREETING> greeting. dtd: <!ELEMENT GREETING (#PCDATA)>
DTD简介 ◼ 一个简例 ◼ greeting.xml: <?xml version="1.0"?> <GREETING> Hello XML! </GREETING> ◼ greeting.dtd: <!ELEMENT GREETING (#PCDATA)>
DTD简介 有效的文档( use greeting.dtd) <GREETING>various random text but no markup</GREETING> 无效的文档 <GREETING><sometag>random text</sometag> <someEmptyTag/></GREETING>
DTD简介 ◼ 有效的文档 (use greeting.dtd) <GREETING>various random text but no markup</GREETING> ◼ 无效的文档 <GREETING><sometag>random text</sometag> <someEmptyTag/></GREETING>
文档类型声明 文档类型声明 Document Type Declaration)将 XML文档与DTD关联起来 文档类型声明出现在文档的 prolog中,在XML声明 之后以及根元素之前 n文档类型声明包含或者指向一个DTD,但在DTD中 不能再包含文档类型声明 语法: <! DOCTYPE doc elem [SYSTEMPUBLIc][identifier] [ location] [internal subset] doc elem:XML文档的根元素
文档类型声明 ◼ 文档类型声明(Document Type Declaration)将 XML文档与DTD关联起来 ◼ 文档类型声明出现在文档的prolog中,在XML声明 之后以及根元素之前 ◼ 文档类型声明包含或者指向一个DTD,但在DTD中 不能再包含文档类型声明 ◼ 语法: ◼ <!DOCTYPE doc_elem [SYSTEM|PUBLIC] [identifier] [location] [internal subset]> ◼ doc_elem: XML文档的根元素