理解XML的DTD:元素、属性与命名空间

需积分: 10 3 下载量 13 浏览量 更新于2024-08-17 收藏 585KB PPT 举报
"这篇文档主要讨论了XML中的前缀表示法和DTD(Document Type Definition)的概念,以及它们在XML文档中的应用。前缀表示法用于区分元素和属性来源于哪个DTD,而DTD则定义了XML文件的结构和语法,确保文件的有效性。" 在XML中,前缀表示法是一种用来唯一标识元素和属性来源的技术。它允许我们在元素名和属性名前添加一个前缀,以表明它们属于哪个命名空间。例如,"联系人"和"企业经理"可能是不同的命名空间中的元素。为了实现这种命名,我们需要解决以下几点: 1. **声明命名空间**:通过使用XML的`xmlns`属性来定义前缀,比如`xmlns:contact="http://example.com/contact"`,其中`contact`是前缀,`http://example.com/contact`是对应的命名空间URI。 2. **合法名称**:带有前缀的元素和属性必须符合XML的命名规则,即名称必须以字母、下划线或冒号开始,后续可以是字母、数字、下划线、冒号或点。前缀和名称之间使用冒号分隔,如`contact:person`。 3. **使用合法名称**:在XML文档中,我们可以通过指定前缀来引用这些命名空间中的元素和属性。例如,`<contact:person>`表示使用了`contact`命名空间的`person`元素。 接下来,我们转向XML的有效性,这与DTD密切相关。XML的"有效"不仅仅意味着文件遵循XML的语法规则,即"形式良好",而且还需要符合DTD的定义。DTD是一种元标记,它定义了XML文件的结构、语法和词汇表,包括元素、标记、属性和实体。 一个XML文件的有效性检查是通过语法分析器完成的,它会比对XML文件内容与DTD中定义的规则。如果文件中的任何信息不符合DTD,那么文件会被认为无效。例如,如果DTD规定元素X必须包含元素Y,而文件中X元素没有Y,则文件无效。 DTD可以是内部的,也可以是外部的。内部DTD定义在XML文件的序言部分,紧随XML声明之后。外部DTD则单独存储在另一个文件中,并通过`<!DOCTYPE>`指令引用。内部DTD的例子如下: ```xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE BookList [ <!-- DTD内容,定义元素和规则 --> ]> <BookList> <!-- 具体的XML数据 --> </BookList> ``` 通过这种方式,DTD为XML文件提供了一套严格的语法规则,使得数据的结构化和一致性得到保证,提高了文件的可读性和可搜索性。在XML文档中正确使用前缀表示法和遵循DTD定义,是创建高质量、结构化XML文件的关键步骤。