为什么 XML 评论不应该包含隐藏命令?

Why shouldn't XML comments contain hidden commands?

我正在阅读 核心 Java 第一卷。 2 由 Cay Horstmann 撰写,在关于 XML 的章节中,他谈到 XML 评论时说:

Comments should only be information for human readers. They should never contain hidden commands; use processing instructions for commands.

他所说的隐藏命令是什么意思,为什么我不能在XML评论中使用它们,以及如何使用它们的处理指令?

XML 评论不应包含带外(隐藏)数据或命令,因为 XML 的目的是在内部交流信息一个共同商定的框架。

定义 XML 本身基础的结构良好规则和定义 XML 文档词汇和语法进一步约束的通用 XML 模式语言都没有意思是在基本文本之外定义注释的内容。这是设计使然,反映了许多编程语言中关于注释的类似设计决策。

不是在 XML 注释中添加标志,或者更糟,而是在 XML 注释中添加微语言,表面数据作为 XML 元素和属性,表面命令作为处理指令,这样整个现有的生态系统解析器、模式、验证器和既定标准可用于读取和写入数据。

有些字符在 XML 中有不同的含义。

如果在 XML 元素中放置“<”之类的字符,则会产生错误,因为解析器会将其解释为新元素的开始。

这将产生一个 XML 错误,因为解析器将寻找匹配的结束标签: 工资 < 1000 (一旦应用程序上线,这可能会导致重大问题)

当您在评论中使用命令时,有时不可避免地会导致上述解析错误。作为注释中的隐藏命令,由于我们可能不查看注释内部,因此很难找到解析问题的根本原因。因此最好避免在注释中添加隐藏命令。

因为这两个原因:

  1. 为了减少误解或可能的错误,即使是注释也不应包含可能被视为可执行语句的命令。 XML 脚本用于传输数据,其中的模式应该定义得非常清楚。
  2. 用于安全编程。为完全防止有人 运行 安装文件,XML 文件不应包含隐藏命令。这样可以防止滥用代码。通过隐藏命令,有人可以将文件复制到其他地方运行,甚至使用命令。