0

さて、ショートバージョンで。先生は、XML スキーマを組み込んだテストの復習をしてくれました (まだクラスで説明していません)。私はその章を読んでいますが、この本は一度にコードのスニペットしか提供しないため、理解するのは困難です。ですから、物事を全体像の中でどのように配置すればよいかわかりません。

このような XML ドキュメントがあります。

<enrollment>
  <semester>1128</semester>
  <student>
    <id>1000001</id>
    <lastname>Smith</lastname>
    <firstname>Joe</firstname>
    <courses>
      <course id="10001"/>
      <course id="10003"/>
    </courses>
    <tuition>200</tuition>
  </student>
</enrollment>

これらのバリデーションを持つ XML スキーマを作成する必要があります。

  1. 0 ~ 10 のコースが存在する可能性があります

  2. 授業料は 0 より大きく 10,000 未満でなければなりません。

  3. コース ID 属性に正確に 5 桁が含まれていることを確認する CourseType という名前のカスタム タイプを作成します。

これは私がこれまでに持っている XML スキーマ コードです (正しいかどうかはわかりません)。最初の 2 つは正しいと確信しています。3つ目はわかりません。

<xs:schema blah blah blah validation inputs>
<xs:element name="enrollment">
<xs:complexType>
  <xs:sequence>
    <xs:element name="courses">
      <xs:complexType>
        <xs:sequence>
          <xs:element name="course"
          minOccurs="0"
          maxOccurs="10"/>
        </xs:sequence>
      </xs:complexType>
    </xs:element>

    <xs:element name="tuition">
    <xs:simpleType>
      <xs:restriction base="xs:integer">
        <xs:minInclusive value="0"/>
        <xs:maxInclusive value="10000"/>
      </xs:restriction>
    </xs:simpleType>
  </xs:element>

    <xs:element name="Courses">
      <xs:complexType name ="Course">
      <xs:simpleContent>
        <xs:extension base ="xs:course ID">
          <xs:attribute name="id" type="CourseType">
          </xs:attribute>
        </xs:extension>
       </xs:simpleContent>
      </xs:complexType>
   </xs:element>
  </xs:sequence>  
</xs:complexType>  
</xs:element>

<xs:simpleType name="CourseType">
   <xs:restriction base="xs:integer">
   <xs:totalDigits value ="5"/>
   </xs:restriction>
 </xs:simpleType>
 </xs:schema>
4

1 に答える 1

0

いくつかの提案。

  • 授業料の制約は、ゼロより大きく、1 万未満でなければならないということです。ただし、宣言では minInclusive ファセットと maxInclusive ファセットを使用しており、0 と 10,000 の値を許可しています。minExclusive と maxExclusive が要件をより適切に満たすかどうかを検討することをお勧めします。

  • totalDigits ファセットは、CourseType 値が 5 桁以下の 10 進数で記述できることを保証しますが、値1-12345、またはを禁止しません0000000000001492。「正確に 5 桁を含む」という制約は、値の字句表現に関する制約を示唆しています。pattern ファセットで必要なものを取得できますか?

于 2013-03-06T16:39:00.523 に答える