特集

InfoPathの衝撃
- マイクロソフトの新しい戦略Officeスイート「InfoPath」によって、XML技術は新時代を迎える -

吉松史彰
2003/03/26


衝撃 1: スキーマ・ベースの簡単なフォーム作成

 ExcelやWordにテキスト・ボックスやボタンを配置して定形フォームの見掛けを作るのは簡単だが、テキスト・ボックスの入力値を検査したり、ボタンがクリックされたときにデータベースにデータを挿入したりするような操作は、高度なマクロを書かなければ実現できなかった。InfoPathでは、そのような機能がドラッグ&ドロップで簡単に手に入る。

■フォーム・テンプレートの作成

 InfoPathのフォームは、Visual Basicのように白紙にコントロールをドラッグ&ドロップして作成することもできる。しかし、InfoPathが持つフォーム作成機能の衝撃的な特徴の1つは、W3C XML Schema(WXS)を使って定義され、XML Schema Definition Language(XSD)で記述されたスキーマ定義文書を読み取って、半自動的にフォームを作成する機能だ。

スキーマから自動作成されるInfoPathのフォーム
InfoPathのフォームは、XSD文書を指定することにより自動生成することができる。後述するように、エラー・チェック機能も実装され、データは純粋なXML文書として保存できる。

 例えば、次のようなXSD文書があるとしよう。非常に単純な、交通費のデータを表すスキーマだ。

<xs:schema targetNamespace="http://example.org/expense" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://example.org/expense">
  <xs:simpleType name="目的型">
    <xs:restriction base="xs:token">
      <xs:enumeration value="打ち合わせ"/>
      <xs:enumeration value="問題対応"/>
      <xs:enumeration value="訪問"/>
      <xs:enumeration value="その他"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:element name="利用日付" type="xs:date"/>
  <xs:element name="目的" type="tns:目的型"/>
  <xs:element name="その他目的" type="xs:token"/>
  <xs:element name="金額" type="xs:positiveInteger"/>
  <xs:complexType name="交通費型">
    <xs:sequence>
      <xs:element ref="tns:利用日付"/>
      <xs:element ref="tns:目的"/>
      <xs:element ref="tns:その他目的"  minOccurs="0"/>
      <xs:element ref="tns:金額"/>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="交通費" type="tns:交通費型"/>
  <xs:complexType name="交通費清算型">
    <xs:sequence>
      <xs:element ref="tns:交通費" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="交通費清算" type="tns:交通費清算型"/>
</xs:schema>
交通費データを表すスキーマを定義したXSD文書の例

 このスキーマでは、次のようなXML文書を妥当と想定している。

<ns1:交通費清算 xmlns:ns1="http://example.org/expense">
  <ns1:交通費>
    <ns1:利用日付>2003-03-05</ns1:利用日付>
    <ns1:目的>打ち合わせ</ns1:目的>
    <ns1:金額>530</ns1:金額>
  </ns1:交通費>
  <ns1:交通費>
    <ns1:利用日付>2003-03-05</ns1:利用日付>
    <ns1:目的>その他</ns1:目的>
    <ns1:その他目的>寄り道</ns1:その他目的>
    <ns1:金額>320</ns1:金額>
  </ns1:交通費>
</ns1:交通費清算>
上記スキーマに従って記述された交通費データの例

 さて、上記のような妥当なXML文書を出力する定形フォーム入力ツールは、スキーマ文書があればInfoPathではドラッグ&ドロップで手に入る。まず、InfoPathを起動し、[ファイル]メニューから[フォームのデザイン]を選択する。すると以下のように、画面右端(デフォルト)の「タスク・ペイン」にメニューが現れる。

XMLスキーマからフォームの作成(1/5)
メニューから[フォームのデザイン]を選択すると「タスク・ペイン」が表示される。ここで[データソースから新規作成]を選択する。

 タスク・ペイン上のメニューで、[データソースから新規作成]を選択する。すると、データ・ソースを選択するダイアログ・ボックスが表示される。

XMLスキーマからフォームの作成(2/5)
ここでは、データ・ソースとしてXMLスキーマ(XSD文書)を使用する。

 興味をそそるオプションが並んでいるが、ここはデフォルトの[XMLスキーマまたはXMLデータファイル]を選択したまま次へ進む。するとファイルを選択する画面になるので、上記のXSD文書を保存したファイルを選択して[完了]をクリックする。すると、画面上に白紙のフォーム・テンプレートが表示され、タスク・ペインには[データソース]が表示される。

XMLスキーマからフォームの作成(3/5)
フォーム作成用の白紙のフォーム・テンプレート。[使用するデータソース]には、XSD文書に記述したスキーマの構造が表示されている。

 [使用するデータソース]欄には、XSD文書に記述したとおりにスキーマの構造が表示されている。ここで、[交通費]を白紙のフォームにドラッグ&ドロップする。

XMLスキーマからフォームの作成(4/5)
[使用するデータソース]から[交通費]を白紙のフォームにドラッグ&ドロップし、[繰り返しテーブル]を選択する。

 メニューが表示されるので、ここでは[繰り返しテーブル]を選択する。すると、入力フォームが自動作成される。

XMLスキーマからフォームの作成(5/5)
データ・ソースの項目をドラッグ&ドロップしただけで、このような入力フォームが自動的に作成される。

 これでひとまず入力フォームの作成は完了した。操作としては、ドラッグ&ドロップしただけであることに注意してほしい。それだけであるにもかかわらず、このフォームにはすでに定形フォームへの入力を支援する機能が含まれている。[ファイル]メニューから[上書き保存]を選択して、ファイルを「交通費.xsn」という名前のファイルとして保存し、ファイルを閉じる。


 INDEX
  [特集]InfoPathの衝撃
   1.衝撃 1: スキーマ・ベースの簡単なフォーム作成(1)
     2.衝撃 1: スキーマ・ベースの簡単なフォーム作成(2)
     3.衝撃 2: “100% Pure XML”のアウトプット
     4.衝撃 3: XML Webサービスとの連携
 


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 記事ランキング

本日 月間