我刚刚阅读this XML Syntax tutorial,并找到“处理指令”的定义(<? ... ?>
)和“声明性陈述”({ {1}})有点雾。我从阅读该页面得到的要点是,它们都是记录文件处理器如何操作的方式。
例如,这是我认为很多人会熟悉的常见代码:
<! ... >
据我所知,这些是关于如何处理文档的两个说明。那有什么区别?
答案 0 :(得分:3)
有些人在编写教程时会尝试提供帮助并发明自己的术语,希望人们会发现它比规范本身的语言更容易理解。这个特定教程的作者似乎在这方面已经过分了。这些术语都不是官方XML术语。
您的示例中的第一件事是XML声明。它告诉XML解析器您正在使用的XML版本以及文档的字符编码是什么。
您的示例中的第二件事是DOCTYPE声明。它告诉XML解析器您正在使用哪些XML词汇表(在本例中为XHTML词汇表),这使得解析器有机会检查您是否正确使用词汇表(即您的文档对引用的DTD有效。)< / p>
答案 1 :(得分:0)
XML源自SGML。在SGML中,处理指令用<? ?>
标记括起来。声明用<! !>
括起来。在XML文档中,第一个SGML处理指令为<?xml ... ?>
,以指示XML的版本和文本编码。之后是<!DOCTYPE ...!>
声明,该声明通知XML解析器如何验证文档。没有声明,XML解析器只能确定文档是否格式正确,而不能确定文档是否有效。如果存在声明,例如DOCTYPE或嵌入式DTD,则解析器还可以确定文档是否有效。