如何使XML中的两个属性成为唯一(DTD)

时间:2017-01-05 19:11:25

标签: xml dtd

如何使XML中的两个属性唯一,例如在SQL中我可以通过以下代码执行此操作:

create table tablename(
  StudentID varchar(20),
  SubjectID varchar(20),
  UNIQUE(StudentID,SubjectID)
)

另一方面,我在XML中有以下代码:

<root>
  <student StudentID="s1" />
  <subject SubjectID="sb1" />
  <tablename StudentID="s1" SubjectID="sb1" />
</root>

如何让属性StudentIDSubjectID变得独一无二?

1 个答案:

答案 0 :(得分:0)

<!ATTLIST student StudentID ID #REQUIRED>
<!ATTLIST subject SubjectID ID #REQUIRED>
<!ATTLIST tablename StudentID IDREF #REQUIRED
                    SubjectID IDREF #REQUIRED>

在您的评论中(“StudentID是元素Student中的ID,SubjectID是元素Subject中的ID,StudentIDSubjectIDtablename中的IDREF。如何确保相同的值不会在这些属性中出现两次?“)听起来好像这就是您在DTD中已有的内容。

换句话说:您已经已经确保相同的值不会在student/StudentIDsubject/SubjectID属性中出现两次。任何值都不能在文档中出现多次,作为声明为ID的属性的值。

如果您的意思是“如何确保没有两个tablename元素具有相同的StudentIDSubjectID对?”,答案是:使用应用程序代码。使用DTD没有好办法。