【问题标题】:XML - External DTD : The content of Element type must matchXML - 外部 DTD:元素类型的内容必须匹配
【发布时间】:2017-08-21 08:30:43
【问题描述】:

我是 XML 新手和学习者! XML 与 XSD 比 DTD 更舒服!我正面临解决 DTD 扩展的错误。

问题: 一个人将有受抚养人,受抚养人可以是配偶和子女,也可以是唯一的配偶。一个人可以有多个孩子。生成 XML 和 DTD

从该架构我可以编写 DTD!将“person.dtd”命名为外部 DTD,将链接到 XML 文件。,

[person.dtd][2] 和 XML 为 ., [person.xml][1]

我面临的错误是!

错误:公共 ID:空系统 ID: 文件:/home/p11422/person_given.xml 行号:11 列 number: 12 消息:元素类型“spouse”的内容必须匹配 “(配偶姓名,配偶年龄)”。

请任何人帮助我摆脱这个错误! 这是 person.dtd ->

 <?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT person (name , age , address , dependents)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT address (#PCDATA)>
<!ELEMENT dependents (spouse,children?)>
<!ELEMENT spouse (spouse_name , spouse_age)>
<!ELEMENT spouse_name (#PCDATA)>
<!ELEMENT spouse_age (#PCDATA)>
<!ELEMENT children (child+)>
<!ELEMENT child (cname , gender , cage)>
<!ELEMENT cname (#PCDATA)>
<!ELEMENT gender (#PCDATA)>
<!ELEMENT cage (#PCDATA)>

这是 person.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE person SYSTEM "person.dtd">
<person>
   <name>Deepak</name>
   <age>28</age>
   <address>Vijayawada</address>
   <dependents>
     <spouse>
         <spouse_name>padma</spouse_name>
         <spouse_age>26</spouse_age>
     </spouse>
    </dependents>
</person>

【问题讨论】:

  • 请提供输入(DTD、XML)作为有问题的代码,而不是链接插图。谢谢。
  • 感谢@potame 的回复!我在上面添加了代码 sn-p !请看一看 ! :)

标签: xml dtd


【解决方案1】:

专业提示:如果您将实际代码放入问题中而不仅仅是图像,则帮助调试问题会容易得多。

由于我正在使用手机并且无法轻松重现该问题,因此我将做出最好的猜测。

我相信您遇到的问题是 dependents 元素的内容模型是不确定的。换句话说,它是模棱两可的;如果不向前看,解析器无法确定正在匹配哪个 spouse

尝试更改您的声明:

<!ELEMENT dependents (spouse|(spouse,children))>

到:

<!ELEMENT dependents (spouse,children?)>

这意味着正好是一个spouse,后跟零或一个children

这似乎与您遇到的错误不符,但这是我看到的唯一错误。 spouse 的声明/使用似乎没问题。

【讨论】:

  • 谢谢@Daniel Haley,我已经更改了声明并更新了我的问题!但我得到了同样的错误!我已经添加了 DTD 和 XML 代码块,请看一下。谢谢楼主
【解决方案2】:

猜测一下,验证器读取的输入不是您认为的输入。您显示的输入对您显示的 DTD 有效,并且 xmllint 和 RXP 都不会发出任何有关“配偶”元素的错误消息。 (两者都抱怨 DTD 开头的空白。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多