试图让我的 DTD 和 XML 正常工作

Trying to get my DTD and XML to work right

我一直在努力让我的 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>

在您的 DTD 中,measurements 的声明需要是:

<!ELEMENT measurements (#PCDATA|distance|weight|volume)*>

这是因为只有一种声明方式mixed content

此外,您在 DTD 中声明了 measurements(复数),但在 XML 中您使用的是 measurement(单数)。您必须更改 DTD 或 XML。如果更改 DTD,请不要忘记更改 XML.

中的文档类型声明

另一件事是 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>