1

DTD を作成しようとしていて、ONE、TWO、または THREE のいずれかの要素 BOOKTYPE を定義したいと考えています。これらの値の 1 つだけを要素内に入力できるようにする方法はありますか?

注: 1. 属性でこれを行う方法は知っていますが、要素で行う方法はわかりません。2. プログラミング言語を使用するのではなく、DTD 内でこれを行う方法が必要です。

4

2 に答える 2

1

DTD にはありません。申し訳ありません。子として表示できる要素と、テキスト コンテンツ (#PCDATA) を表示できるかどうかのみを指定できます。テキストの内容が何であるかについて発言権はありません。

データを属性に移動するか、古くて不格好な DTD よりも強力なスキーマ言語を使用する必要があります。

于 2009-09-26T11:56:07.030 に答える
0

これらの値の 1 つだけを要素内に入力できるようにする方法はありますか?

はい、 XML Enumerationを含む XML スキーマ定義 (XSD) を使用します。通貨の例を次に示します。

<xsd:simpleType name = "iso3currency">
 <xsd:restriction base = "xsd:string">
  <xsd:enumeration value = "AUD"/><!-- Australian Dollar -->
  <xsd:enumeration value = "BRL"/><!-- Brazilian Real -->
  <xsd:enumeration value = "CAD"/><!-- Canadian Dollar -->
  <xsd:enumeration value = "CNY"/><!-- Chinese Yen -->
  <xsd:enumeration value = "EUR"/><!-- Euro -->
  <xsd:enumeration value = "GBP"/><!-- British Pound -->
  <xsd:enumeration value = "INR"/><!-- Indian Rupee -->
  <xsd:enumeration value = "JPY"/><!-- Japanese Yen -->
  <xsd:enumeration value = "RUR"/><!-- Russian Rouble -->
  <xsd:enumeration value = "USD"/><!-- US Dollar -->
  <xsd:length value = "3"/>
 </xsd:restriction>

これにより、要素の値がリストされた列挙値の 1 つと長さ 3 に制限されます。

これを使用するには、バリデーターを介して XML と XSD を渡す必要があります。.NET でこれを行う方法の例を次に示します。

方法: Visual C#.NET で XML スキーマに対して XML フラグメントを検証する http://support.microsoft.com/kb/318504

于 2009-09-26T07:21:43.767 に答える