【问题标题】:XML not valid to DTD (same ID)XML 对 DTD 无效(相同 ID)
【发布时间】:2014-12-15 21:32:44
【问题描述】:

所以我已经编写了这个 xml 文档,但是我没有编写一个有效的 DTD。我知道问题在于 ID(学生姓名“DB”)在文档中出现了两次,因此它不是唯一的。但是如何更改我的 DTD 以允许 ID 执行此操作?我在这个领域真的很绿所以这可能是一个愚蠢的问题。

<?xml version="1.0" standalone="no"?>
<!DOCTYPE COURSES [
<!ELEMENT COURSES (COURSE*)>
<!ELEMENT COURSE (PROFESSOR+, STUDENT+)>
<!ATTLIST COURSE name ID #REQUIRED>
<!ELEMENT PROFESSOR EMPTY>
<!ATTLIST PROFESSOR name ID #REQUIRED>
<!ELEMENT STUDENT (NOTES*)>
<!ATTLIST STUDENT name ID #REQUIRED>
<!ATTLIST STUDENT enrolled IDREFS #IMPLIED>
<!ELEMENT NOTES (#PCDATA)>
]>
<COURSES>
<COURSE name="Architecture">
<PROFESSOR name="Andersson"/>
<STUDENT name="JB" enrolled="Architecture">
<NOTES>2nd BaSC</NOTES>
</STUDENT>
<STUDENT name="DB" enrolled="Architecture"/>
</COURSE>
<COURSE name="Mechanics">
<PROFESSOR name="Geerts"/>
<STUDENT name="DB" enrolled="Mechanics"/>
</COURSE>
</COURSES>

【问题讨论】:

  • 这真的取决于你的语义。 ID 表示它是唯一的属性。您可以改用 CDATA。 xmlwriter.net/xml_guide/attlist_declaration.shtml
  • 如果教授教授多门课程,您可能会遇到与教授相同的问题。您是否考虑过将教授、学生和课程分成各自独立的结构?这样您就可以使用 IDREF/IDREFS 作为对只需要创建一次的教授/学生/课程的引用。
  • 如果您想要我所说的拆分示例,请告诉我,我会添加一个。

标签: xml validation dtd


【解决方案1】:

使用此链接验证您的 dtd/xml http://validator.w3.org/check,该网站是标准此语言的官方组织。

&lt;STUDENT name="DB" enrolled="Architecture"/&gt;

已回复。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-21
    • 1970-01-01
    相关资源
    最近更新 更多