An XSD Example
On 9月 29, 2021 by adminこの章では、XML スキーマの書き方を説明します。
An XML Document
この “shiporder.XML” という XML ドキュメントを見てみましょう。
Create an XML Schema
ここで、上記の XML ドキュメント用のスキーマを作成します。
まず、「shiporder.xsd」と呼ぶ新しいファイルを開くことから始めます。 スキーマを作成するには、単に XML ドキュメントの構造に従って、各要素を見つけるとそれを定義することができます。 スキーマを定義する xs:schema 要素が続く標準的な XML 宣言から始めます:
<xs:schema xmlns:xs=”http://www.w3.org/2001/XMLSchema”>
…
</xs:schema>
上記のスキーマでは、標準の名前空間 (xs) を使用し、この名前空間に関連付けられた URI は Schema 言語定義で、標準値 http://www.w3.org/2001/XMLSchema を持つものである。
次に、”shiporder” 要素を定義する必要があります。 この要素は属性を持ち、他の要素を含むので、複合型と見なします。 shiporder” 要素の子要素は、サブ要素の順序付きシーケンスを定義する xs:sequence 要素で囲まれます:
<xs:complexType>
<xs:sequence>
.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX…
</xs:sequence>
</xs:complexType>
</xs:element>
そして、「orderperson」要素を単純型として定義しなければなりません(属性や他の要素を含まないからです)。 型 (xs:string) には、定義済みのスキーマ データ型を示す XML Schema に関連付けられた名前空間接頭辞が付きます。
次に、複合型の二つの要素を定義しなければなりません。 “shipto “と “item “です。 maxOccursは要素の最大出現回数を、minOccursは要素の最小出現回数を指定します。 maxOccursとminOccursの両方のデフォルト値は1です!
ここで、”item “要素を定義することができます。 この要素は “shiporder “要素内に複数回出現することができます。 これは、”item” 要素の maxOccurs 属性を “unbounded” に設定することで、作者が望むだけ “item” 要素を出現させることができることを意味します。 note “要素は任意であることに注意してください。 minOccurs属性を0に設定することでこれを指定しています:
次に、”shiporder “要素の属性を宣言します。 これは必須属性なので、use=”required” と指定します。
注意:属性宣言は常に最後に来る必要があります。
以下は “shiporder.” というスキーマ ファイルを完全にリストアップしたものです。xsd”:
Divide the Schema
以前の設計方法は非常にシンプルですが、ドキュメントが複雑になると、読み取りと保守が困難になることがあります。
次の設計方法は、すべての要素と属性を最初に定義し、次に ref 属性を使用してそれらを参照することに基づいています。
スキーマ ファイル (“shiporder.xsd”) の新しい設計は次のとおりです。
Using Named Types
3 番目の設計方法はクラスまたはタイプを定義し、要素定義を再利用できるようにします。 これは、simpleTypes および complexTypes 要素に名前を付け、要素の type 属性を通じてそれらを指すことで行われます。
スキーマ ファイル (“shiporder.xsd”) の 3 番目の設計を次に示します。 つまり、次のフラグメントは、要素または属性の値が文字列値でなければならないことを意味します:
制限要素は要素に制限を適用するためによりよく使用されます。 上のスキーマの次の行を見てください:
<xs:restriction base=”xs:string”>
<xs:pattern value=”{6}”/>
</xs.Item </xs:simpleType>
これは、要素または属性の値は文字列でなければならず、それは正確に6文字が並んでいなければならず、それらの文字は0から9までの数字でなければならないことを表します。
コメントを残す