XML - 外部DTD:元素类型的内容必须匹配
我是XML和学习者的新手!带XSD的XML比DTD更舒服!即时消息面临错误解决DTD扩展。XML - 外部DTD:元素类型的内容必须匹配
问题: 一个人会有家属,家属可以是配偶,子女或只有配偶。一个人可以有超过1个孩子。生成XML和DTD
从该架构我能够写DTD!命名为 “person.dtd” 将被链接到XML文件的外部DTD。,
[person.dtd] [2] 和XML作为。, [person.xml] [1]
我面对的错误就是这样!
Error: Public ID: null System ID: file:/home/p11422/person_given.xml Line number: 11 Column number: 12 Message: The content of element type "spouse" must match "(spouse_name,spouse_age)".
任何人都请帮我摆脱这个错误! 这是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>
临提示:这是很容易帮助调试一个问题,如果你把实际的代码中的问题,而不是只图片。
由于我在我的手机上,无法轻松重现问题,所以我会尽量猜测。
我相信你遇到的问题是dependents
元素的内容模型是非确定性的。换句话说,它是模棱两可的;解析器无法确定哪个spouse
正在被匹配而没有向前看。
尝试从改变你的声明:
<!ELEMENT dependents (spouse|(spouse,children))>
到:
<!ELEMENT dependents (spouse,children?)>
这意味着只有一个spouse
后跟零个或一个children
。
这似乎不符合你所得到的错误,但这是我看到错误的唯一的东西。 spouse
的声明/使用似乎没有问题。
谢谢@Daniel Haley,我更改了声明并更新了我的问题!但我得到同样的错误!我已经添加了DTD和XML代码块,请看看。谢谢你,先生 –
猜测,验证器读取的输入不是您认为的输入。您显示的输入对您显示的DTD有效,并且xmllint和RXP都不会发出有关“配偶”元素的任何错误消息。 (两者都会抱怨DTD开头的空白处)
请提供输入(DTD,XML)作为有问题的代码,而不是链接的插图。谢谢。 – potame
谢谢@potame回复!我已经添加了上面的代码片段!请看一看 ! :) –