XML数据结构与文档模式详解
立即解锁
发布时间: 2025-08-23 01:16:54 阅读量: 1 订阅数: 17 

### XML数据结构与文档模式详解
#### 1. XML数据结构
XML(可扩展标记语言)是一种用于存储和传输数据的标记语言,其文档的基本构建块是元素。
##### 1.1 元素的基本概念
元素由一对匹配的开始标签和结束标签以及它们之间的所有文本组成。XML文档必须有一个根元素,它包含文档中的所有其他元素。例如:
```xml
<university>
<!-- 其他元素 -->
</university>
```
元素必须正确嵌套,例如:
```xml
<course>
<title>课程标题</title>
</course>
```
是正确嵌套的,而
```xml
<course>
<title>课程标题</course>
</title>
```
则不是。
文本可以与元素的子元素混合,不过这种自由在文档处理中更有意义,对于表示数据库内容等结构化数据用途不大。
##### 1.2 嵌套表示法
元素可以嵌套在其他元素中,这种嵌套表示法提供了一种替代的信息表示方式。例如,将课程元素嵌套在系元素中,可以方便地找到某个系提供的所有课程。
```xml
<university-1>
<department>
<dept name>Comp. Sci.</dept name>
<building>Taylor</building>
<budget>100000</budget>
<course>
<course id>CS-101</course id>
<title>Intro. to Computer Science</title>
<credits>4</credits>
</course>
<course>
<course id>CS-347</course id>
<title>Database System Concepts</title>
<credits>3</credits>
</course>
</department>
<!-- 其他系元素 -->
</university-1>
```
然而,嵌套表示法可能会导致数据的冗余存储。如果一门课程由多个教师教授,课程信息可能会在每个与该课程相关的教师元素中重复存储。
##### 1.3 属性
除了元素,XML还规定了属性的概念。属性以`name=value`对的形式出现在标签的闭合“>”之前。例如:
```xml
<course course id="CS-101">
<title>Intro. to Computer Science</title>
<dept name>Comp. Sci.</dept name>
<credits>4</credits>
</course>
```
在文档构建中,子元素和属性的区别很重要,但在数据库和数据交换应用中,这种区别不太相关。一般建议仅使用属性来表示标识符,而将其他数据存储为子元素。
另外,没有子元素或文本的元素可以缩写为`<element/>`,缩写元素可以包含属性。
##### 1.4 命名空间
为了避免不同组织创建的XML文档中标签重复,引入了命名空间机制。命名空间的思想是在每个标签或属性前加上通用资源标识符(如Web地址)。例如,耶鲁大学可以使用`http://www.yale.edu`作为唯一标识符,并在标签名前加上该标识符和冒号。
```xml
<university xmlns:yale="http://www.yale.edu">
<yale:course>
<yale:course id>CS-101</yale:course id>
<yale:title>Intro. to Computer Science</yale:title>
<yale:dept name>Comp. Sci.</yale:dept name>
<yale:credits>4</yale:credits>
</yale:course>
</university>
```
文档可以有多个命名空间,根元素可以定义默认命名空间。
##### 1.5 CDATA
有时需要存储包含标签的值而不将其解释为XML标签,XML允许使用`<![CDATA[<course> · · ·</course>]]>`这种结构。被CDATA包含的文本将被视为普通文本数据,而不是标签。
#### 2. XML文档模式
数据库有模式来约束存储的信息和数据类型,而默认情况下,XML文档可以在没有关联模式的情况下创建。这里介绍两种XML模式定义语言:文档类型定义(DTD)和XML Schema。
##### 2.1 文档类型定义(DTD)
DTD是XML文档的可选部分,其主要目的是约束和类型化文档中的信息。但它不能约束基本类型(如整数或字符串),主要约束元素内子元素和属性的出现。
例如,一个大学信息文档的部分DTD如下:
```xml
<!DOCTYPE university [
<!ELEMENT university ( (department|course|instructor|teaches)+)>
<!ELEMENT department ( dept name, building, budget)>
<!ELEMENT course ( course id, title, dept name, credits)>
<!ELEMENT instructor (IID, name, dept name, salary)>
<!ELEMENT teaches (IID, course id)>
<!ELEMENT dept name( #PCDATA )>
<!ELEMENT building( #PCDATA )>
<!ELEMENT budget( #PCDATA )>
<!ELEMENT course id ( #PCDATA )>
<!ELEMENT title ( #PCDATA )>
<!ELEMENT credits( #PCDATA )>
<!ELEMENT IID( #PCDATA )>
<!ELEMENT name( #PCDATA )>
<!ELEMENT salary( #PCDATA
```
0
0
复制全文