额外的标记以XML形式出现,而不是在DTD中声明

额外的标记以XML形式出现,而不是在DTD中声明,xml,dtd,Xml,Dtd,我是XML新手。我尝试使用以下XML: <?xml version="1.0"?> <!DOCTYPE person [ <!ELEMENT first_name (#PCDATA)> <!ELEMENT last_name (#PCDATA)> <!ELEMENT profession (#PCDATA)> <!ELEMENT name (first_name, last_name)> <

我是XML新手。我尝试使用以下XML:

<?xml version="1.0"?>
<!DOCTYPE person [
  <!ELEMENT first_name (#PCDATA)>
  <!ELEMENT last_name  (#PCDATA)>
  <!ELEMENT profession (#PCDATA)>
  <!ELEMENT name       (first_name, last_name)>
  <!ELEMENT person     (name, profession*)>
]>
<person>
  <name>
    <first_name>Alan</first_name>
    <last_name>Turing</last_name>
  </name>
  <profession>computer scientist</profession>
  <profession>mathematician</profession>
  <job>cryptographer</job>
</person>

]>
艾伦
图灵
计算机科学家
数学家
密码学家
由于标记不存在,我在打开XML文件时在浏览器上没有遇到错误。
请帮助我理解这一点。提前感谢。

我使用IE打开此xml,没有错误。然后使用验证工具对其进行验证。得到一个错误和两个警告,如下所示:

警告:

--没有在文档级别声明字符编码

--使用直接输入模式:假定UTF-8字符编码

错误:

--元素“job”未定义 密码学家 ✉ 您已经在文档中使用了上面命名的元素,但是您使用的文档类型没有定义该名称的元素。此错误通常由以下原因引起:

对使用框架的文档不正确地使用了“严格”文档类型(例如,必须使用“框架集”文档类型才能获取“”元素), 通过使用供应商专有的扩展,如“”或“”(这通常通过使用CSS来实现所需的效果来解决)。
通过在XHTML中使用大写标记(在XHTML中,属性和元素必须都是小写)。

您到底不明白什么?XML中有“job”,在“doctype”之后的定义中没有“job”。我实际上不知道这些都是什么,但我看到了错误;)好的,让我们来简化一下——如果我输入的标签不正确,那么这个XML应该会给出错误,这并不像预期的那样。