連載

.NETで簡単XML

第7回 VS.NETでXML Schemaを活用する(作成編)

株式会社ピーデー 川俣 晶
2003/08/19
Page1 Page2 Page3 Page4

 次に、個人要素に属性を付けよう。そのためには、名無しの型に属性の定義を付け加えるだけでよい。要素を追加するのと同じ要領で、elementではなくattributeを選んで書き込む。名前はIDとし、型もIDを指定する。たまたま同じ文字列になってしまったが、名前のIDは属性名、型のIDはXML Schema Part2で定義されるXMLのID型である。

XML Schemaを作成する:手順8
個人要素の属性を設定する。名前はID、型もIDとする。

 同じ要領で名前要素と住所要素も追加しよう。

XML Schemaを作成する:手順9
名前要素、住所要素を追加する。型はstringとしよう。

 この表示では名前要素、住所要素、ID属性という順番になっているので、ID属性を最後に書かねばならないルールになってしまったかのように見えるが、もちろん属性は開始タグの中に書かれるものなので、子要素よりも先に書くことになる。つまり属性に順番は関係ないということである。

 さて、これでほとんど意図したルールは指定し終えたことになる。順番の強制などは特に指定していないが、これでよい。特に指定しなければ順番は強制され、勝手に順番を変えてXML文書を記述するとエラー扱いになる。順番にかかわらずにエラーなく通したければ、その意図を明示的にスキーマ上で示す必要がある(例えば、XML Schemaのall要素などを使う)。

 最後に1つだけまだ足りない意図を付けたそう。それは、個人要素は任意の数だけ記述できるというものだ。そのためには、上の箱の「個人」をクリックしてから、プロパティ・ウィンドウのmaxOccursにunboundedと入力する。

XML Schemaを作成する:手順10
個人要素を任意の数だけ記述できるように、個人要素のmaxOccursプロパティをunboundedに設定する。

 maxOccursは繰り返し可能な最大数を指定するプロパティである。ここには通常数値を指定するのだが、無制限に何回でも繰り返し可能としたい場合は、unboundedという文字列を入力する。

 これで意図したルールを記述したスキーマは完成した。ファイル・メニューの[名前を付けてソリューションの保存]でファイル名をAddressBook.xsdとして保存しておこう。

 なお、スキーマの編集ウィンドウの下の方に[スキーマ]と[XML]という選択を行う部分がある。これまでは、[スキーマ]が選択された状態で作業してきたが、[XML]の方をクリックすると、今作成したスキーマがXML文書の形式で表示される。これが、スキーマの真の姿である。これまでの作業は、これを作るためのものであったのである。普通の作業手順で行けば、このようなXML文書を手動で書き込むことになるのだが、それをVisual Studio .NETのビジュアル・スキーマ編集機能で代用したというわけである。

 参考までに、以下にXML文書として表示したスキーマの内容を示す。

<?xml version="1.0" encoding="utf-8" ?>
<xs:schema targetNamespace="http://www.atmarkIT.co.jp/ns/sample/addressBook" elementFormDefault="qualified"
  xmlns="http://www.atmarkIT.co.jp/ns/sample/addressBook" xmlns:mstns="http://www.atmarkIT.co.jp/ns/sample/addressBook"
  xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="住所録">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="個人" maxOccurs="unbounded">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="名前" type="xs:string" />
              <xs:element name="住所" type="xs:string" />
            </xs:sequence>
            <xs:attribute name="ID" type="xs:ID" />
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>
Visual Studio .NETが生成したXML Schema

次回予告

 以上、今回はXML Schemaとは何かを説明し、Visual Studio .NETを利用して実際にスキーマを作成した。次回後編では、こうして作成したスキーマをベースとして、XML文書を検証するプログラムやデータセットを活用したプログラミング・テクニックについて解説していく予定だ。End of Article


 INDEX
  .NETで簡単XML
  第7回 VS.NETでXML Schemaを活用する(作成編)
    1.XML Schemaとは何か
    2.Visual Studio .NETでスキーマを作成する(1)
    3.Visual Studio .NETでスキーマを作成する(2)
  4.Visual Studio .NETでスキーマを作成する(3)
 
インデックス・ページヘ  「連載 :.NETで簡単XML」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間