我是XML和学习者的新手!使用XSD的XML比DTD更舒服!我正面临着解决DTD扩展的错误。
问题: 一个人有家属,家属可以是配偶和子女,也可以是配偶。一个人可以有一个以上的孩子。生成XML和DTD
从那个架构我能写DTD!将“ person.dtd ”命名为将链接到XML文件的外部DTD。
[person.dtd] [2] 和XML作为。, [person.xml] [1]
我面临的错误是!
错误:公共ID:null系统ID: file:/home/p11422/person_given.xml行号:11列 number:12消息:元素类型“配偶”的内容必须匹配 “(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>
答案 0 :(得分:1)
专业提示:如果您将实际代码放在问题中而不仅仅是图像中,那么帮助调试问题要容易得多。
由于我在手机上并且无法轻易重现这个问题,我会做出最好的猜测。
我相信您遇到的问题是dependents
元素的内容模型是非确定性的。换句话说,它含糊不清;
spouse
正在匹配。
尝试更改您的声明:
<!ELEMENT dependents (spouse|(spouse,children))>
为:
<!ELEMENT dependents (spouse,children?)>
这意味着只有一个spouse
后跟零或一个children
。
这似乎与你得到的错误不符,但这是我唯一看错的地方。 spouse
的声明/用法似乎没问题。
答案 1 :(得分:0)
猜测,验证器读取的输入不是您认为的输入。您显示的输入对您显示的DTD有效,xmllint和RXP都不会发出有关配偶的任何错误消息。元件。 (两者都抱怨DTD开头的空白。)