我们分三个部分学习:XML 声明、DTD(文档类型定义)、文档元素。
1. XML 声明:文档的“自我介绍”
XML 声明是 XML 文档的第一行,用于说明文档的基本信息,就像一个信封上的“寄件人信息”。
语法格式
XML
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
• version:必填,表示 XML 版本(目前主要是 1.0)。
• encoding:可选,定义文档的字符编码(如 UTF-8、GBK)。
• standalone:可选,值为 yes 或 no,表示文档是否依赖外部文件(如 DTD)。
示例
XML
<?xml version="1.0" encoding="UTF-8"?>
这表示:这是一个 XML 1.0 文档,使用 UTF-8 编码,且没有依赖外部文件。
2. DTD(文档类型定义):文档的“规则手册”
DTD 定义了 XML 文档的结构规则,比如允许哪些元素、元素之间的关系等。它像是产品的“说明书”,告诉解析器如何正确解析文档。
DTD 的两种类型
- 内部 DTD:直接写在 XML 文档内部。
- 外部 DTD:通过 URL 引用外部的 .dtd 文件。
内部 DTD 示例
XML
<!DOCTYPE 书籍列表 [ <!-- 定义根元素为“书籍列表” -->
<!ELEMENT 书籍列表 (书+)>
<!-- “书+”表示至少有一个“书”元素 -->
<!ELEMENT 书 (书名, 作者, 价格)>
<!-- “书”元素包含三个子元素 -->
<!ELEMENT 书名 (#PCDATA)>
<!-- #PCDATA 表示文本内容 -->
<!ELEMENT 作者 (#PCDATA)>
<!ELEMENT 价格 (#PCDATA)>
]>
• <!ELEMENT>:定义元素的结构。
• (#PCDATA):表示元素内是普通文本。
• +:表示至少出现一次(类似正则表达式)。
外部 DTD 示例
XML
这表示从 book.dtd 文件中加载 DTD 规则。
3. 文档元素:XML 的“内容主体”
文档元素是 XML 中实际存储数据的部分,由标签和内容组成。元素可以嵌套,形成树状结构。
元素的基本规则
• 根元素:XML 必须有且只有一个根元素,所有其他元素嵌套在根元素内。
• 标签闭合:每个开始标签必须有对应的结束标签(如 <书名></书名>)。
• 区分大小写:
示例:完整的 XML 文档
XML
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE 书籍列表 [
<!ELEMENT 书籍列表 (书+)>
<!ELEMENT 书 (书名, 作者, 价格)>
<!ELEMENT 书名 (#PCDATA)>
<!ELEMENT 作者 (#PCDATA)>
<!ELEMENT 价格 (#PCDATA)>
]>
<书籍列表>
<书>
<书名>XML 入门指南</书名>
<作者>张三</作者>
<价格>50.00</价格>
</书>
<书>
<书名>网络安全基础</书名>
<作者>李四</作者>
<价格>68.00</价格>
</书>
</书籍列表>
结构解析
• 根元素:<书籍列表> 是根元素。
• 子元素:每个 <书> 是 <书籍列表> 的子元素。
• 叶子元素:<书名>、<作者>、<价格> 是最底层元素,只包含文本。
总结:三者如何协作?
- XML 声明:告诉解析器“我是 XML 文档,版本和编码是什么”。
- DTD:规定文档的结构规则(允许哪些元素、如何嵌套)。
- 文档元素:按照 DTD 的规则,实际存储数据内容。
练习建议
- 动手写 XML:尝试用记事本或 VS Code 写一个简单的 XML 文件(例如个人简历),包含声明、DTD 和元素。
- 验证工具:使用 XML 在线验证工具 检查你的 XML 是否符合 DTD 规则。
- 问题思考:如果 DTD 中规定 <价格> 必须是数字,但 XML 中写成了文字(如“五十元”),会发生什么?
感谢浏览和学习,作者:鱼油YOU,转载请注明原文链接:https://www.cnblogs.com/OmegaYOU3/p/18809775,或者可以➕主播WX:OmegaAnimeman_desu;QQ:3819054512
浙公网安备 33010602011771号