1. 基本元素声明:
元素声明的一般形式如下:
<!ELEMENT element_name content_model>
其中:
- element_name 是元素的名称。
- content_model 定义了元素的内容模型,即元素包含的内容。
例如,下面的声明表示 <book> 元素包含一个 <title> 元素和一个 <author> 元素:
<!ELEMENT book (title, author)>
2. 内容模型:
内容模型定义了元素的内容结构,可以包括以下几种类型:
- 元素名称: 表示元素包含一个具体的子元素。
<!ELEMENT book (title, author)>
- #PCDATA: 表示元素包含文本数据。
<!ELEMENT title (#PCDATA)>
- 混合内容(Mixed Content): 表示元素可以包含文本和其他元素。
<!ELEMENT paragraph (#PCDATA | b | i)*>
- 空元素(Empty Element): 表示元素没有内容。
<!ELEMENT empty_element EMPTY>
3. 元素的次数:
通过使用 +、*、? 等符号,可以指定元素在文档中出现的次数:
- +:至少出现一次。
<!ELEMENT list (item+)>
- *:零次或多次。
<!ELEMENT paragraph (#PCDATA | b | i)*>
- ?:零次或一次。
<!ELEMENT optional (title?)>
4. 嵌套元素:
可以嵌套使用元素声明,以定义复杂的嵌套结构:
<!ELEMENT bookstore (book+)>
<!ELEMENT book (title, author, price)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT author (#PCDATA)>
<!ELEMENT price (#PCDATA)>
在上述例子中,bookstore 元素包含一个或多个 book 元素,而每个 book 元素包含 title、author 和 price 元素。
5. 元素属性:
可以使用 ATTLIST 定义元素的属性:
<!ATTLIST book category CDATA #IMPLIED>
上述例子表示 book 元素可以有一个 category 属性,数据类型为 CDATA,且是可选的。
6. CDATA 和 ID 类型:
- CDATA(Character Data): 表示元素包含纯文本数据,可以包括任意字符。
<!ELEMENT description (#CDATA)>
- ID 类型: 表示属性值是唯一标识符。
<!ELEMENT student (name, id)>
<!ATTLIST student id ID #REQUIRED>
这些是关于 DTD 元素声明的基本概念和语法。DTD 提供了一种简单的机制来定义 XML 文档的结构和规范,但它也有一些限制,因此在更复杂的场景中,可能会选择使用 XML Schema 或 Relax NG 这样的替代技术。
转载请注明出处:http://www.pingtaimeng.com/article/detail/12193/XML