为了满足我的应用程序特定需求,我正在从通过数据库访问数据转向 XML。我目前正在通过引用我的 SQL 表模式为 XML 编写 DTD。我已经将 4 列的约束定义为唯一(这 4 列定义了 3 步深的目录结构,因此它们必须是唯一的,例如 dir1/dir2/dir3/dirA 和 dir1/dir2/dir3/dirB)。我知道我可以使用 ID 来保持属性的唯一性,但是如何将 4 个属性绑定在一起呢?
谢谢,
虾皮
使用 anID
和 anIDREF
来定义这种关系。这里有两种格式:
DTD
<!DOCTYPE lab_group [
<!ELEMENT lab_group (student_name)*>
<!ELEMENT student_name (#PCDATA)>
<!ATTLIST student_name student_no ID #REQUIRED>
<!ATTLIST student_name tutor_1 IDREF #IMPLIED>
<!ATTLIST student_name tutor_2 IDREF #IMPLIED>
<!ATTLIST student_name tutor_3 IDREF #IMPLIED>
<!ATTLIST student_name tutor_4 IDREF #IMPLIED>
]>
XSD
<xs:element name="student_name">
<xs:key name="ID">
<xs:selector xpath="student_no"/>
<xs:field xpath="@id"/>
</xs:key>
<xs:keyref name="IDREF" refer="ID">
<xs:selector xpath="//student_name/@tutor_1|//student_name/@tutor_2|//student_name/@tutor_3|//student_name/@tutor_4"/>
<xs:field xpath="@ref"/>
</xs:keyref>
</xs:element>
以下是一些类似物以供快速参考: