我一直试图让我的XML不仅查看DTD,而且在尝试验证我的DTD时收到错误,说明根元素之前的文档中的标记必须格式正确。我不确定我做错了什么或如何使它成为两个文件都有效。任何帮助将不胜感激。
DTD:
<!ELEMENT measurements (#PCDATA|distance|weight|volume)>
<!ELEMENT weight (#PCDATA)>
<!ELEMENT volume (#PCDATA)>
<!ELEMENT distance (#PCDATA)>
<!ATTLIST distance status (metric|imperial) #REQUIRED>
XML:
<?xml version="1.0"?>
<!DOCTYPE measurements PUBLIC "-//American Sentinel//XML Applications//EN" "measurements.dtd">
<measurement>
<weight>5</weight>
<volume>10</volume>
<distance>metric</distance>
</measurement>
答案 0 :(得分:1)
在您的DTD中,measurements
的声明必须是:
<!ELEMENT measurements (#PCDATA|distance|weight|volume)*>
这是因为只有一种方法可以声明mixed content。
此外,您已在DTD中声明measurements
(复数),但在您的XML中,您使用measurement
(单数)。您必须更改DTD或XML。如果您更改了DTD,请不要忘记更改XML中的doctype声明。
另一件事是,status
属性在DTD中声明为必需。
固定DTD和XML的示例......
<强> DTD 强>
<!ELEMENT measurements (#PCDATA|distance|weight|volume)*>
<!ELEMENT weight (#PCDATA)>
<!ELEMENT volume (#PCDATA)>
<!ELEMENT distance (#PCDATA)>
<!ATTLIST distance status (metric|imperial) #REQUIRED>
<强> XML 强>
<!DOCTYPE measurements PUBLIC "-//American Sentinel//XML Applications//EN" "measurements.dtd">
<measurements>
<weight>5</weight>
<volume>10</volume>
<distance status="metric"/>
</measurements>