DTD DOCTYPE 声明在预期之前关闭

DTD DOCTYPE declaration close before intended

提问人:juan rangel 提问时间:7/15/2022 更新时间:7/15/2022 访问量:49

问:

你好第一个时间发布。我正在做一个 DTD 来验证 XML 和 IDK,为什么当读取我的代码时,doctype 声明以 dtd 的 fisrt 元素的“>”结束,而不是在放置“]>”的末尾结束。我花了几个小时研究这个,但我的朋友中没有人知道 XML。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE torneo [

<!ELEMENT torneo (edicion, anteriorGanador, participante+)>
<!ATTLIST torneo 
edicion CDATA #REQUIRED
anteriorGanador CDATA #REQUIRED>
<!ELEMENT participante (idP, pareja, nombre, edad, cabezaDeSerie?)>
<!ATTLIST participante 
idP ID #REQUIRED
pareja IDREF #REQUIRED>
<!ELEMENT nombre (#PCDATA)>
<!ELEMENT edad (#PCDATA)>
<!ELEMENT cabezaDeSerie (EMPTY)>
]>
XML DTD 文档类型

评论

0赞 Jim Garrison 7/15/2022
您使用什么程序来验证您的 dtd?请包含所有错误消息。
0赞 Jim Garrison 7/15/2022
您指定了 and 作为 AND 的子元素,也指定为属性,但尚未声明这两个元素。和 相同。idPparejaparticipanteedicionanteriorGanador

答:

1赞 Jim Garrison 7/15/2022 #1

您似乎希望 和 成为 的属性,并且 和 成为 的属性。要实现这一点,只需删除这些属性作为子元素的规范即可。edicionanteriorGanadortorneoidPparejaparticipante

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE torneo [

<!ELEMENT torneo (participante+)>
<!ATTLIST torneo 
    edicion CDATA #REQUIRED
    anteriorGanador CDATA #REQUIRED>
<!ELEMENT participante (nombre, edad, cabezaDeSerie?)>
<!ATTLIST participante 
    idP ID #REQUIRED
    pareja IDREF #REQUIRED>
<!ELEMENT nombre (#PCDATA)>
<!ELEMENT edad (#PCDATA)>
<!ELEMENT cabezaDeSerie (EMPTY)>
]>
<torneo edicion="a" anteriorGanador="zzz">
    <participante idP="xxx" pareja="xxx">
        <nombre>asdf</nombre>
        <edad>33</edad>
    </participante>
</torneo>

评论

0赞 juan rangel 7/15/2022
我 10 分钟前才这样做。非常感谢您抽出宝贵时间接受采访