"实体属性类型-DTD 和Schema"
在XML中,DTD(Document Type Definition)和Schema都是用于定义XML文档结构和验证其有效性的规范。DTD是XML早期的规范,而Schema是相对较新的,提供更强大和灵活的结构定义。
1. DTD定义
DTD是一种定义XML文档结构的规则集,它描述了元素、属性、实体以及它们之间的关系。一个基本的DTD定义包括:
- 元素声明:`<!ELEMENT 元素名 类型>`,类型可以是空(EMPTY)、文本(#PCDATA)或其他元素组合。
- 属性声明:`<!ATTLIST 元素名 属性名 属性类型 #IMPLIED|#REQUIRED>`,属性类型可以是预定义的(如CDATA、ID等)或实体引用。
- 实体声明:`<!ENTITY 实体名 "实体内容">` 或 `<!ENTITY 实体名 SYSTEM "外部文件名">`,实体可以用来引用文本或外部资源。
- 示例中的DTD定义了一个`文件`元素,包含一个`电影`元素,并且`电影`元素有一个名为`来源`的实体类型属性,该属性是必需的(#REQUIRED)。`BladeRunner`实体被定义为一个外部系统实体,引用了一个视频文件。
2. XML精髓
XML的核心在于其自定义标记,它允许用户根据信息需求创建具有明确逻辑关系的结构化文档。XML文件需要遵循一套严格的语法规则,以确保“形式良好”(Well-formed),并且通常还需要是“有效”(Valid)的,即符合某个DTD或Schema的定义。
3. DTD的作用
- 有效性验证:DTD为XML文档提供了一套验证规则,确保文档符合预定义的结构。
- 文档结构清晰:通过定义元素和属性,DTD帮助保持文档结构的清晰和一致性。
- 可读性与可搜索性:通过规范化的元素和属性,提高文档的可读性和搜索引擎的可索引性。
4. 内部与外部DTD
- 内部DTD:直接包含在XML文档的序言中,方便文档的分发和使用,但可能导致文档体积增大。
- 外部DTD:存储在单独的文件中,通过`<!DOCTYPE ... SYSTEM "DTD文件名.dtd">`引用,使得多个文档可以共享同一套规则,减少冗余。
5. Schema
XML Schema是W3C推荐的替代DTD的标准,提供了更丰富的数据类型、命名空间支持和更复杂的结构约束。Schema使用XML语法来定义XML文档的结构,这使得它更容易理解和维护,但也更复杂。
6. 实体引用
在示例中,`电影`元素的`来源`属性使用实体引用`&BladeRunner;`,这使得属性值引用了外部资源,简化了文档的编写和维护。
总结来说,DTD和Schema是XML文档结构的关键组件,它们定义了文档的语法规则并确保数据的有效性。DTD是基础,而Schema是增强版,两者都增强了XML文档的结构化和标准化。实体引用则为XML提供了引用外部资源的能力,增强了XML的灵活性。