是否有一种方法从XML DTD中的另一个元素引用元素?



我正在制作一个'students' XML,它存储学生及其信息,如姓名,地址,电话…

在这种情况下,我有一个元素'help -by'在'additional-information'里面,我想在其中'引用';帮助过该学生的同学及他们的基本情况

这是我的代码

<!ELEMENT students (student+)>
<!ELEMENT student
(name, surname, address, telephone-numbers, procedence,
student-marks*, additional-information, comments)>
<!ATTLIST student ID ID #REQUIRED>
<!ATTLIST student sex (male|female) #IMPLIED>
<!ELEMENT name (#PCDATA)>
<!ELEMENT surname (#PCDATA)>
<!ELEMENT address (street, number, city)>
<!ELEMENT street (#PCDATA)>
<!ELEMENT number (#PCDATA)>
<!ELEMENT city (#PCDATA)>
<!ELEMENT telephone-numbers (telefono+)>
<!ELEMENT telephone-number (#PCDATA)>
<!ATTLIST telefono-number headline CDATA #REQUIRED>
<!ELEMENT procedence (province|origin-country)>
<!ELEMENT province (#PCDATA)>
<!ELEMENT origin-country (#PCDATA)>
<!ELEMENT student-marks (#PCDATA|evaluation)*>
<!ELEMENT evaluation (mark)>
<!ATTLIST evaluation evaluation-number (first | second | final) #REQUIRED>
<!ELEMENT mark (#PCDATA)>
<!ELEMENT additional-information (sports-team?, height?, hobbies*, helped-by*)>
<!ELEMENT sports-team (#PCDATA)>
<!ELEMENT height (#PCDATA)>
<!ELEMENT hobbies (#PCDATA)>
<!ELEMENT helped-by ()>
<!ELEMENT comments (comment)>
<!ELEMENT comment (#PCDATA)>

我想过这样做:

<!ELEMENT helped-by (name, surname)>

但我不确定这是正确的还是最好的选择。我希望你能给我一些关于这个话题的建议,谢谢你的时间。

对于DTD,我推荐使用IDREF(有关属性类型的更多信息,请参阅此处)。

<!ELEMENT helped-by EMPTY>
<!ATTLIST helped-by
refid IDREF #REQUIRED>

元素看起来像这样:

<helped-by refid="some_student_id"/>

如果您希望允许多个"助手",您可以使用IDREFS:

<!ATTLIST helped-by
refid IDREFS #REQUIRED>

元素可以像这样(也可以和上面一样;只要有多个对应的id):

<helped-by refid="some_student_id another_student_id"/>

同样,属性不必是refid。它可以被命名为其他东西

最新更新