1

アプリケーション固有のニーズのために、データベース経由でのデータ アクセスから XML へのアクセスに移行しています。現在、SQL テーブル スキーマを参照して XML の DTD を作成しています。4 つの列が一意になるように制約を定義しました (これらの 4 つの列はディレクトリ構造を 3 段階深く定義するため、一緒に一意にする必要があります。たとえば、dir1/dir2/dir3/dirA と dir1/dir2/dir3/dirB)。ID を使用して属性の一意性を維持できることはわかっていますが、これを 4 つの属性にバインドするにはどうすればよいですか?

ありがとう、

シュリパッド

4

1 に答える 1

1

この関係を定義するには、IDとともに を使用します。IDREF以下に 2 つの形式を示します。

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>

クイックリファレンス用にいくつかの類似物を次に示します。

  • ID => 主キー
  • IDREF => 外部キー
  • IDREFS => 結合
于 2013-06-24T16:55:46.043 に答える