以下是XML简易教程之四的完整攻略:
XML简易教程之四
DTD(Document Type Definition)介绍
DTD是XML文档类型定义的缩写,它是一种约定,它规定了XML文档中各元素、属性的合法格式。DTD可以理解成XML的“字典”。在XML文档中使用了DTD后,XML解析器就能够根据DTD规定的格式来确定XML文档是否有效。
有两种方式来声明DTD:
外部DTD声明
在XML文档中通过DOCTYPE语句来声明外部DTD,语法如下:
<!DOCTYPE root-element SYSTEM "filename">
其中,root-element表示XML文档的根元素,filename表示DTD文件的路径。
内部DTD声明
在XML文档中直接定义DTD,语法如下:
<!DOCTYPE root-element [
属性和实体声明
]>
其中,root-element表示XML文档的根元素,属性和实体声明用于定义DTD。
DTD五种元素类型
1. 元素类型 (Element Type)
元素类型指规定XML文档中元素的结构,包括元素名和元素的类型,语法如下:
<!ELEMENT element-name content-model>
其中,element-name为元素名,content-model为元素的类型。
content-model支持以下几种类型:
- 元素名:表示元素内容只能包含该元素名所表示的元素。
- (#PCDATA):表示元素内容只能包含文本。
- (子元素, 子元素):表示元素内容必须包含括号内的子元素,并且子元素的顺序必须和括号内的顺序一致,多个子元素之间用逗号隔开。
- (子元素|子元素):表示元素内容必须包含括号内的任意一个子元素,多个子元素之间用竖杠符号隔开。
- (子元素 *):表示元素内容可以包含0个或多个括号内的子元素。
2. 属性类型 (Attribute Type)
属性类型指规定XML文档中属性的类型和格式,语法如下:
<!ATTLIST element-name attribute-name attribute-type default-value>
其中,element-name表示属性所属的元素名,attribute-name为属性名,attribute-type为属性的类型,default-value表示属性的默认值。
attribute-type支持以下几种类型:
- CDATA:表示属性值为文本。
- ENUMERATION:表示属性值为多个固定取值中的一种。
- ID:表示属性值为唯一标识符。
- IDREF:表示属性值为另一个元素的唯一标识符。
- IDREFS:表示属性值为多个另一个元素的唯一标识符。
- NMTOKEN:表示属性值为XML标识符。
- NMTOKENS:表示属性值为多个XML标识符。
- ENTITY:表示属性值为实体名。
- ENTITIES:表示属性值为多个实体名。
3. 实体类型 (Entity Type)
实体类型指规定XML文档中实体的类型,语法如下:
<!ENTITY entity-name entity-value>
其中,entity-name为实体名,entity-value为实体的值。
实体分为两种类型:
- 内部实体:实体的值定义在DTD中。
- 外部实体:实体的值定义在DTD以外的一个独立文件中。
4. 注释类型 (Comment Type)
注释类型指规定XML文档中的注释格式,语法如下:
<!— comments -->
其中,comments为注释内容。
5. 处理指令 (Processing Instruction Type)
处理指令用于XML文档中传递处理信息,语法如下:
<?processing-instruction?>
其中,processing-instruction为处理指令内容。
示例说明
示例一
在此示例中,我们定义了一个名为“person”的元素,该元素包含两个子元素:一个名为“name”的子元素和一个名为“age”的子元素,其中“name”子元素的内容只能是文本,“age”子元素的内容只能是数字。
<!-- person.dtd -->
<!ELEMENT person (name, age)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
示例二
在此示例中,我们定义了一个名为“student”的元素,该元素包含一个名为“id”的属性,属性值为唯一标识符,且为必要属性。
<!-- student.dtd -->
<!ELEMENT student (#PCDATA)>
<!ATTLIST student id ID #REQUIRED>
以上就是XML简易教程之四的完整攻略,希望能够帮到你。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:XML简易教程之四 - Python技术站