XSD-スマートXML

XSDは、XMLドキュメントの構造を記述するための言語です。 XMLスキーマとも呼ばれます。 XMLパーサーは、XMLスキーマを使用して、XMLドキュメントの正しい構文だけでなく、その構造、コンテンツモデル、およびデータ型もチェックできます。

このアプローチにより、オブジェクト指向プログラミング言語でメモリ内にオブジェクトを簡単に作成できます。これは、XMLを通常のテキストファイルとして解析するよりも間違いなく便利です。

さらに、XSDは拡張可能であり、既製の辞書を接続して、SOAPなどのWebサービスなどの一般的なタスクを記述することができます。

また、XSDにはドキュメントツールが組み込まれているため、追加の説明を必要としない自己完結型のドキュメントを作成できます。

例として、Habrのアカウント構造の一部を説明するXSDドキュメントを考えます。





XSDスキーマのテキストと、このスキーマに対応するXMLドキュメントは、サイズが大きいため記事に含めませんでした。

図の最初の行は、ドキュメントがXMLドキュメントであり、UTF-8エンコードを使用していることを示しています。
<? xml version ="1.0" encoding ="UTF-8" ? >
次の行は、ドキュメントの主要な要素であるhabra_userの説明から始まります。
< xs:element name ="habra_user" >
要素を文書化する行:
< xs:annotation >
< xs:documentation > . </ xs:documentation >
</ xs:annotation >

<xs:complexType>タグは、「複雑な」 user_nameデータ型を記述します 。 必要に応じて、 contact_infoと同様に、別のデータ型としてレンダリングできます。 これを行うには、 <xs:complexType>ブロックを<xs:schema>に転送して、 name属性を指定し、 type属性を要素に設定する必要があります。

要素user_namefirst_namelast_nameは文字列タイプで、アカウント所有者のユーザー、名前、および姓を記述します。

date_of_birth要素には日付データ型があり、生年月日を記述します。

登録日は、独自のcustomDateTimeデータを持つregister_dateによって記述さます。 このタグの値は、 value属性を使用して設定されます。 これは線で示されます。
< xs:attribute name ="value" use ="required" >
さらに、属性が必要です。 値が要件を満たすために、「チェック」について説明します。
< xs:simpleType >
< xs:restriction base ="xs:string" >
< xs:length value ="19" />
< xs:pattern value ="[1-2][0-9][0-9][0-9]-[0-1][0-9]-[0-3][0-9] [0-2][0-9]:[0-5][0-9]:[0-5][0-9]" />
</ xs:restriction >
</ xs:simpleType >

この場合、文字列の長さは常に19になり、これは<xs:length>タグで指定され、値自体は<xs:pattern>タグで指定されたパターンに対応します。

contact_infoおよびblog要素は配列です。maxOccurs = "unbounded"属性はこれを示します。

<xs:choice>タグは、ネストされた要素がICQまたはlinkedin要素のいずれかになることを決定します。

<xs:sequence>タグは、ネストされた要素がそのシーケンスのblog_nameおよびblog_urlであることを示します。 順序が重要でない場合は、 <xs:all>タグを使用します。

XSDスキームの詳細については、 WikipediaおよびW3Cを参照してください。 Altova XMLSpyを使用してレイアウトを作成しました。

ご清聴ありがとうございました!

Source: https://habr.com/ru/post/J90696/


All Articles