
DTD编写详解:定义规则及属性实体使用指南

DTD(Document Type Definition,文档类型定义)是SGML(Standard Generalized Markup Language,标准通用标记语言)的简化版,它用于定义XML或者SGML文档的结构和合法元素。DTD文件一般用来作为XML文档的验证文件,它定义了XML文档的结构和内容模式,指明了哪些元素可以出现在文档中,这些元素的层次关系如何,以及这些元素可以包含哪些属性。在本篇文档中,我们将详细讲解DTD的编写规则,包括元素定义规则、元素间关系定义规则、元素可使用的属性规则,以及可使用的实体或符号规则。
首先,元素的定义规则是DTD中核心的组成部分。元素在DTD中通过元素声明来定义,声明可以是内部声明或者外部声明。内部声明直接放在XML文档类型声明的方括号内,而外部声明则需要引用一个外部的DTD文件。元素的声明需要指定它的开始标签和结束标签,以及它的内容模型,即该元素可以包含哪些其他元素,这些元素的顺序和数量。
其次,元素间关系的定义规则,主要体现在元素内容模型的制定上。内容模型定义了一个元素包含的子元素和文本内容的规则。在DTD中,内容模型可以包括以下几种:
- 空(EMPTY):该元素不包含任何内容。
- 任意(ANY):该元素可以包含任何类型的子元素和文本。
- 元素序列:列出的元素必须按照指定的顺序出现。
- 元素组合:列出的元素可以以任意顺序出现,但必须全部出现一次。
- 选项(|):列出的元素之间是互斥的,只能选择其中一个。
- 重复(*、+、?):分别表示元素可以出现任意次数、至少出现一次以及最多出现一次。
再次,元素可使用的属性在DTD中需要通过属性列表声明(ATTLIST)来进行定义。属性列表声明为元素指定了可以使用的属性,每个属性的声明指定了属性的名称、类型和默认值。属性的类型可以是:CDATA(字符数据)、(ID、IDREF、IDREFS、ENTITY、ENTITIES)、NMTOKEN、NMTOKENS等。每个属性必须有默认值,可以是#REQUIRED(必须提供)、#FIXED(固定值)、#IMPLIED(可选,无默认值)或具体的默认值。
最后,可使用的实体或符号规则,主要包括内部实体和外部实体两种。实体是用来为文档中的数据定义一个别名,使用实体可以简化文档内容,并有助于跨文档的共享数据。内部实体在DTD内部声明,而外部实体则在DTD外部的文件中声明,并通过实体声明引用。符号则是指特殊字符的表示方法,如小于号(<)可以表示为<,大于号(>)表示为>等。
综上所述,编写DTD文档需要遵循一定的规则和格式。一个标准的DTD文档通常包含以下部分:
1. 元素声明:通过<!ELEMENT>来定义。
2. 属性列表声明:通过<!ATTLIST>来定义。
3. 实体声明:通过<!ENTITY>来定义。
4. 符号声明:通常不需要显式声明,因为它们是XML的一部分。
在编写DTD文档时,除了遵循上述规则外,还需注意以下几点:
- 元素的声明应该清晰和简洁,避免过于复杂的嵌套。
- 元素和属性的命名要遵循XML命名规则,即它们必须以字母或下划线开始,且只能包含字母、数字、下划线、连字符和点。
- DTD文档需要严格遵守XML的语法规则,例如标签的正确开启和闭合。
- 对于外部DTD文件,可以通过<!DOCTYPE>来引用,其可以带有Public标识和System标识来指定文件位置。
通过以上内容的学习,我们可以更加深入地了解DTD的基本结构和编写方法,从而为编写高质量的XML文档打下坚实的基础。
相关推荐


















- 粉丝:
最新资源
- ASP.NET电子产品销售网站设计与实现毕业项目
- 多商家网络商店系统设计与实现毕业项目源码
- Eclipse中Java程序打包jar连接MySQL数据库教程
- ASP+ACCESS网上论坛开发完整教程与源代码
- winCE6模拟器快速启动指南:一键秒开虚拟机整合包
- Photoshop CS v8.01 安装包下载
- 体验指尖战斗:JS制作的网页版飞机大战
- 华为ME909s 4G模块使用手册及Windows驱动下载
- 蜂窝铝板与铝方板施工安装技术详解
- 揭秘天花板安装的全过程及注意事项
- CUDA 11.1 & CUDNN 8.0.5 配合 OpenCV 4.5.3 编译指南
- 小契约交友小程序源码解析与开发指南
- JPA技术实战教程:实现数据增删改查
- 律师帮帮微信小程序法律咨询服务源码
- 深入探讨对称密码:智能信息安全的核心
- Git资源大全:深入了解版本控制工具
- Java JDK 8u291 32位Windows版安装包发布
- 轻松安装Git 2.9.3.2-64位版本 支持最新IDEA集成
- CentOS 7下使用kubeadm搭建Kubernetes集群指南
- Ambari与HDP组合安装包下载指南
- 无线通信设备发射功率调整方法及应用
- 银河麒麟V10下ARM64架构鲲鹏920处理器安装MySQL 5.7指南
- baseimage-docker: 构建高效Docker基础映像的开源方案
- 学生党自制Python雷电游戏飞机大战代码求支持