XML Schema – 派生 – 制限 (restriction)
書式
<xsd:restriction base="データ型名" />
<制約ファセット value="制限値">
<xsd:restriction>
制限ファセット一覧
| 制約ファセット | 内容 |
|---|---|
| xsd:length | 長さ |
| xsd:minLength | 長さの最小値 |
| xsd:maxLength | 長さの最大値 |
| xsd:minInclusive | 値範囲の最小値(指定した値を含む) |
| xsd:maxInclusive | 値範囲の最大値(指定した値を含む) |
| xsd:minExclusive | 値範囲の最大値(指定した値を含まない) |
| xsd:maxExclusive | 値範囲の最大値(指定した値を含まない) |
| xsd:pattern | 正規表現 |
xsd:length
文字列長の指定。
XML Schema
<xsd:element name="userid">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:length value="5" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
XML
<userid>A0011</userid>
xsd:string を継承し、文字列長を 5 文字に制限。
xsd:minLength, xsd:maxLength
文字列長の上限・下限を指定する。
XML Schema
<xsd:element name="userid">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:minLength value="2" />
<xsd:maxLength value="5" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
XML
<userid>A0011</userid>
xsd:string を継承し、文字列長を 2 文字以上 5 文字以下に制限。
xsd:minInclusive, xsd:maxInclusive
数値の範囲を指定する。
XML Schema
<xsd:element name="count">
<xsd:simpleType>
<xsd:restriction base="xsd:int">
<xsd:minInclusive value="1" />
<xsd:maxInclusive value="100" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
XML
<count>50</count>
xsd:int を継承し、値の範囲を 1 以上 100 以下に制限。
xsd:maxExclusive, xsd:maxExclusive
数値の範囲を指定する。
XML Schema
<xsd:element name="count">
<xsd:simpleType>
<xsd:restriction base="xsd:int">
<xsd:minExclusive value="0" />
<xsd:maxExclusive value="100" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
XML
<count>50</count>
xsd:int を継承し、値の範囲を 1 より大きく、100 より少ない数に制限。( 2 以上、99 以下)
xsd:pattern
文字列のパターンを正規表現で指定
XML Schema
XML Schema
<xsd:element name="userid">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:pattern value="ID\d{5}" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
XML
<userid>ID00010</count>
xsd:string を継承し、先頭 2 文字が "ID" という文字列で、その後に数字が 5 文字続く制約を指定。
XML Schema – 要素宣言
書式
単体で定義。
<xsd:element name="要素名" type="データ型" />
名前で参照する場合。
<xsd:element name="要素名" type="データ型" />
↑これを参照
<xsd:element ref="要素名" />
XML Schema – xsd:all (すべての要素を順不同に出現させる)
書式
<xsd:all>
<xsd:element name="名前1" type="データ型" />
<xsd:element name="名前2" type="データ型" />
</xsd:all>
※上記の例では名前1と名前2が順不同で出現する。
例
XML Schema
<xsd:element name="data">
<xsd:complexType>
<xsd:all>
<xsd:element name="name" type="xsd:string" />
<xsd:element name="age" type="xsd:int" />
</xsd:all>
</xsd:complexType>
</xsd:element name="data">
XML
<data>
<name>MAME</name>
<age>10</name>
</data>
もしくは
<data>
<age>10</name>
<name>MAME</name>
</data>

