You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何XML根元素company必须在DTD中声明?

为什么XML根元素company也需要在DTD中声明?

这是因为DTD的核心作用就是定义XML文档的合法结构规则——只要你在XML里声明了DOCTYPE(也就是启用了DTD约束),所有出现在文档里的元素,包括根元素,都必须在DTD中明确声明。

你当前的代码里,DTD部分是空的:

<!DOCTYPE company [
        ]>

解析器找不到根元素company的定义,所以会抛出「Element type "company" must be declared」的警告。

修复方法有两种:

  1. 在DTD中补全根元素声明
    如果你的company元素是空的(没有子元素),可以这样写:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE company [
            <!ELEMENT company EMPTY>
            ]>
    <company>
    </company>
    

    如果company有子元素,比如包含多个employee,就需要同时声明子元素:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE company [
            <!ELEMENT company (employee*)>
            <!ELEMENT employee (name, age)>
            <!ELEMENT name (#PCDATA)>
            <!ELEMENT age (#PCDATA)>
            ]>
    <company>
      <employee>
        <name>张三</name>
        <age>30</age>
      </employee>
    </company>
    
  2. 移除DTD声明
    如果你根本不需要DTD的结构约束,直接删掉整个<!DOCTYPE company []>行即可,解析器就不会再要求元素声明了。

内容的提问来源于stack exchange,提问作者Leo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 01:32:35