【问题标题】:Is my DTD correct and how do I check it?我的 DTD 是否正确,如何检查?
【发布时间】:2017-06-01 21:44:08
【问题描述】:

这是我第一次尝试从头开始编写 DTD,但我似乎遇到了麻烦。当我在 www.xmlvalidation.com 中检查它时,它告诉我有一个错误,但我似乎没有发现问题。 这是我的 xml 代码,取自讲师给出的示例。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE studentMarks SYSTEM "marks.dtd">
<studentMarks>
<matricNO>S123</matricNO>
<courseCode>CYY505</courseCode>
<mark>70</mark>
<matricNO>S123</matricNO>
<courseCode>CYY502</courseCode>
<mark>84</mark>
<matricNO>S123</matricNO>
<courseCode>CYY503</courseCode>
<mark>72</mark>
<matricNO>S123</matricNO>
<courseCode>CYY501</courseCode>
<mark>90</mark>
<matricNO>S123</matricNO>
<courseCode>CYY506</courseCode>
<mark>87</mark>
</studentMarks>

这是我的 DTD

<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT studentMarks (matricNO,courseCode,mark)>
<!ELEMENT matricNO (#PCDATA)>
<!ELEMENT courseCode (#PCDATA)>
<!ELEMENT mark (#PCDATA)>

任何帮助将不胜感激!谢谢你:)

【问题讨论】:

  • 您收到的错误信息是什么?
  • @Oscar 我收到了这个错误信息。元素类型“studentMarks”的内容必须匹配“(matricNO,courseCode,mark)”
  • 顺便说一句,我不认为这是一个好的 XML 设计。如果您在每组三个子元素周围添加一个包装元素,则数据将更容易处理。
  • @MichaelKay 我同意。但这就是给我的样本所以是的。

标签: xml xml-parsing dtd


【解决方案1】:

声明

<!ELEMENT studentMarks (matricNO,courseCode,mark)>

表示 studentMarks 必须恰好具有三个具有指定名称的子元素。如果您希望这组三个元素重复,请使用

<!ELEMENT studentMarks (matricNO,courseCode,mark)*>

(下次您在 StackOverflow 上提问时,请不要在不告诉我们错误是什么的情况下说您遇到了错误)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-20
    • 1970-01-01
    相关资源
    最近更新 更多