xml schema xsd入門
13925 ワード
XML Schemaの理解:XML Schemaイニシャル(I)、単純タイプ例、リストタイプxsd:list、コンビネーションタイプxsd:union
コンセプト:
要素にサブ要素が含まれている場合、または属性が付いている場合は
複合タイプ;逆に要素は、数値、文字列、その他のデータのみを含むが、サブ要素を含まない場合は
単純なタイプ.
変換元:
http://blog.sina.com.cn/s/blog_4c6245400100bhbq.html
一、最も基本的な
対応するSchema
二、子元素を含んで、complexType
対応するSchema
三、孫元素を含んで、直接ネストしてもいいし、refを使って構造を簡略化することもできる.
ダイレクトネスト時のXSD
Refの
四、同じサブエレメントの数を定義する
maxOccursの値はunbounded、最小値はminOccursで、両方のデフォルト値は1です.
対応するschema:
五、オプション可能なサブ要素を定義する.
xsd:choice
上記の注文データのうち、本名または番号のいずれかで注文できる場合、インスタンスドキュメントは次のようになります.
対応するschema
ここでの値が1の場合、デフォルトとします.
対応するschema
六、内蔵単純タイプ
XML Schemaに内蔵される単純なタイプは44種類ある.XML Schema推奨規格の第2部で発表されています.以下は内蔵タイプの階層図です.
七、カスタム単純タイプ
シンプルタイプの44種類が内蔵されていて、まだ要件を満たしていない場合は、どうすればいいですか?次に、カスタム単純タイプについて学習します.(XMLの拡張性はここに十分に現れている)
IDは標準的なISBN符号化ですが、このISBN符号化をどのように定義しますか?
idTypeはカスタマイズされたシンプルなタイプです.
私たちはそれを制限しました.
は、文字列タイプに基づいていることを示します.文字列の形式をpattern要素で記述します.value="d{1}-d{4}-d{4}-d{1}"これは正規表現である.
このカスタムの簡単なタイプを使用して、Schemaドキュメントを書き直すことができます.
IDが3つしかない、すなわちISBNが3つしか選択できないと事前に確定したらどうしますか?私たちは
Enumeration要素を列挙する
注文量quantityの値を見てみると、
もし私たちがその値を1-10の間に設定しなければならないならば、どうすればいいですか?これらは単純なタイプをカスタマイズできます.
八、属性の定義
xsd:attribute
対応するschema
では、インスタンスドキュメントの属性値は必須ですか、それとも有無は可能ですか.このように制限することができます.
ここではid属性タイプをカスタムデータ型idTypeとして説明する.また、attribute要素のuseプロパティを使用して、必要なプロパティかどうかを定義します.
requiredは必須値、optionalはオプション値、prohibitedは無属性値です.
では、属性のデフォルト値について、どのように定義しますか?例:
まだ使えます
attribute要素の別の属性defaultを定義します.
上記のプロパティでは、プロパティグループを使用してSchemaドキュメントを書き直すこともできます.
コンセプト:
要素にサブ要素が含まれている場合、または属性が付いている場合は
複合タイプ;逆に要素は、数値、文字列、その他のデータのみを含むが、サブ要素を含まない場合は
単純なタイプ.
変換元:
http://blog.sina.com.cn/s/blog_4c6245400100bhbq.html
一、最も基本的な
<?xml version="1.0"?>
<greeting>Hello World!!</greeting>
対応するSchema
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="greeting" type="xsd:string"/>
</xsd:schema>
二、子元素を含んで、complexType
<customer>
<name>teiki</name>
<address>No.237, Road Waitan, Shanghai</address>
</customer>
対応するSchema
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="customer">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="name" type="xsd:string"/>
<xsd:element name="address" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
三、孫元素を含んで、直接ネストしてもいいし、refを使って構造を簡略化することもできる.
<?xml version="1.0"?>
<customer>
<name>Teiki</name>
<address>
<prefecture>Zhejiang</prefecture>
<city>Hangzhou</city>
<street>Xilu Road, No.121, 7F</street>
</address>
</customer>
ダイレクトネスト時のXSD
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="customer">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="name" type="xsd:string"/>
<xsd:element name="address">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="prefecture" type="xsd:string"/>
<xsd:element name="city" type="xsd:string" />
<xsd:element name="street" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
Refの
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="customer">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="name" type="xsd:string"/>
<xsd:element ref="address"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="address">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="prefecture" type="xsd:string"/>
<xsd:element name="city" type="xsd:string" />
<xsd:element name="street" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
四、同じサブエレメントの数を定義する
maxOccursの値はunbounded、最小値はminOccursで、両方のデフォルト値は1です.
<order>
<orderItem>Accounting Book</orderItem>
<orderItem>Taxation Book</orderItem>
</order>
対応するschema:
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema
<xsd:element name="order">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="orderItem" type="xsd:string" maxOccurs="10" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
五、オプション可能なサブ要素を定義する.
xsd:choice
上記の注文データのうち、本名または番号のいずれかで注文できる場合、インスタンスドキュメントは次のようになります.
<order>
<orderItem>
<!-- -->
<name>Accounting Book</name>
</orderItem>
<orderItem>
<!-- -->
<id>7-5058-3496-7</id>
</orderItem>
</order>
対応するschema
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="order">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="orderItem" maxOccurs="10"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="orderItem">
<xsd:complexType>
<xsd:choice>
<xsd:element name="name" type="xsd:string"/>
<xsd:element name="id" type="xsd:string"/>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
ここで
<order>
<orderItem>
<name>Accounting Book</name>
<quantity>2</quantity>
</orderItem>
<orderItem>
<id>7-5058-3496-7</id>
</orderItem>
</order>
対応するschema
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="order">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="orderItem" maxOccurs="10"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="orderItem">
<xsd:complexType>
<xsd:sequence>
<xsd:choice>
<xsd:element name="name" type="xsd:string"/>
<xsd:element name="id" type="xsd:string"/>
</xsd:choice>
<xsd:element name="quantity" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
六、内蔵単純タイプ
XML Schemaに内蔵される単純なタイプは44種類ある.XML Schema推奨規格の第2部で発表されています.以下は内蔵タイプの階層図です.
七、カスタム単純タイプ
シンプルタイプの44種類が内蔵されていて、まだ要件を満たしていない場合は、どうすればいいですか?次に、カスタム単純タイプについて学習します.(XMLの拡張性はここに十分に現れている)
<order>
<orderItem>
<id>7-5058-3496-7</id>
<quantity>5</quantity>
</orderItem>
</order>
IDは標準的なISBN符号化ですが、このISBN符号化をどのように定義しますか?
<xsd:simpleType name="idType">
<xsd:restriction base="xsd:string">
<xsd:pattern value="\d{1}-\d{4}-\d{4}-\d{1}"/>
</xsd:restriction>
</xsd:simpleType>
idTypeはカスタマイズされたシンプルなタイプです.
私たちはそれを制限しました.
このカスタムの簡単なタイプを使用して、Schemaドキュメントを書き直すことができます.
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="order">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="orderItem" maxOccurs="10"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="orderItem">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="id" type="idType"/>
<xsd:element name="quantity" type="xsd:integer"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:simpleType name="idType">
<xsd:restriction base="xsd:string">
<xsd:pattern value="\d{1}-\d{4}-\d{4}-\d{1}"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>
IDが3つしかない、すなわちISBNが3つしか選択できないと事前に確定したらどうしますか?私たちは
Enumeration要素を列挙する
<xsd:simpleType name="idType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="7-5058-3496-7"/>
<xsd:enumeration value="7-5005-6450-3"/>
<xsd:enumeration value="7-3020-6069-7"/>
</xsd:restriction>
</xsd:simpleType>
注文量quantityの値を見てみると、
もし私たちがその値を1-10の間に設定しなければならないならば、どうすればいいですか?これらは単純なタイプをカスタマイズできます.
<xsd:simpleType name="quantityType">
<xsd:restriction base="xsd:integer">
<xsd:minInclusive value="1"/>
<xsd:maxInclusive value="10"/>
</xsd:restriction>
</xsd:simpleType>
八、属性の定義
xsd:attribute
<order>
<orderItem id="7-5058-3496-7"/>
</order>
対応するschema
<xsd:element name="orderItem">
<xsd:complexType>
<xsd:sequence> <!-- -->
</xsd:sequence>
<!-- -->
<xsd:attribute name="id" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
では、インスタンスドキュメントの属性値は必須ですか、それとも有無は可能ですか.このように制限することができます.
<xsd:attribute name="id" type="idType" use="required"/>
ここではid属性タイプをカスタムデータ型idTypeとして説明する.また、attribute要素のuseプロパティを使用して、必要なプロパティかどうかを定義します.
requiredは必須値、optionalはオプション値、prohibitedは無属性値です.
では、属性のデフォルト値について、どのように定義しますか?例:
まだ使えます
attribute要素の別の属性defaultを定義します.
<xsd:attribute name="quantity" type="xsd:integer" default="1"/>
上記のプロパティでは、プロパティグループを使用してSchemaドキュメントを書き直すこともできます.
<xsd:element name="orderItem">
<xsd:complexType>
<xsd:sequence/>
<xsd:attributeGroup ref="orderItemAttributes"/>
</xsd:complexType>
</xsd:element>
<xsd:attributeGroup name="orderItemAttributes">
<xsd:attribute name="id" type="idType" use="required"/>
<xsd:attribute name="quantity" type="xsd:integer" default="1"/>
</xsd:attributeGroup>