🌀 鱼油のB10g

✦ 不定期更新技术随想

✦ 分享奇妙发现

📌 近期动态:

探索AI和工具使用...

我们分三个部分学习: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 的两种类型

  1. 内部 DTD:直接写在 XML 文档内部。
  2. 外部 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</价格>
  </书>
</书籍列表>

结构解析
• 根元素:<书籍列表> 是根元素。
• 子元素:每个 <书> 是 <书籍列表> 的子元素。
• 叶子元素:<书名>、<作者>、<价格> 是最底层元素,只包含文本。

总结:三者如何协作?

  1. XML 声明:告诉解析器“我是 XML 文档,版本和编码是什么”。
  2. DTD:规定文档的结构规则(允许哪些元素、如何嵌套)。
  3. 文档元素:按照 DTD 的规则,实际存储数据内容。

练习建议

  1. 动手写 XML:尝试用记事本或 VS Code 写一个简单的 XML 文件(例如个人简历),包含声明、DTD 和元素。
  2. 验证工具:使用 XML 在线验证工具 检查你的 XML 是否符合 DTD 规则。
  3. 问题思考:如果 DTD 中规定 <价格> 必须是数字,但 XML 中写成了文字(如“五十元”),会发生什么?
posted on 2025-04-05 09:07  鱼油YOU  阅读(144)  评论(0)    收藏  举报