XML中的“处理指令”和“声明性声明”有什么区别?

时间:2012-04-12 03:00:26

标签: xml xsd

我刚刚阅读this XML Syntax tutorial,并找到“处理指令”的定义<? ... ?>)和“声明性陈述”({ {1}})有点雾。我从阅读该页面得到的要点是,它们都是记录文件处理器如何操作的方式。

例如,这是我认为很多人会熟悉的常见代码:

<! ... >

据我所知,这些是关于如何处理文档的两个说明。那有什么区别?

2 个答案:

答案 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,则解析器还可以确定文档是否有效。