テレもち
kyssロゴタイプ
2005年8月20日更新

Word 2003 + XML

カスタム定義スキーマを使う

次は,Word2003でのXML文書作成を試してみましょう.使用するWord文書の内容は,リスト5の通りです.
【リスト5】使用するWord2003文書の内容(list5.doc)
エアコン
空気の汚れを強力集じん.除菌効果も長続き.プラズマ脱臭効果,省エネ設計,電気代の節約にも.
冷蔵庫
2003年4月,業界トップクラスの大容量.すみずみまで冷やす均一冷却で食品も素早くスピード冷却.冷えるまでの待ち時間を従来の半分に短縮した画期的な商品です.
除湿機
奥行き約18cm&背面フラットの薄型ボディ.窓ぎわにスッキリと設置できます.低騒音で使いやすさ満点.
 このリスト5を単純に,Word2003の[ファイル/名前を付けて保存]で[ファイルの種類]にXMLを指定して,XML形式で保存してみます.保存した結果は,図23のようなソースになります.このソースには,リスト5にあるような商品データ以外にも,作成者やスタイルに関する膨大な情報が埋め込まれています.この中のコードの大半は,データ処理に必ずしも必要ではありません.処理目的に応じたデータを抜き出す作業は大変です.そこで,「カスタム定義スキーマ」という機能を使ってみましょう.
【図23】リスト5のWord文書を[ファイルの種類]にXMLを指定して保存した結果の一部
リスト5のWord文書を[ファイルの種類]にXMLを指定して保存した結果の一部
 「カスタム定義スキーマ」という名の通り,スキーマをあらかじめ用意する必要があります. ここでは,リスト5のWord文書にタグを付けて,リスト6のようなXML文書を作成してみます.そこで,リスト6のXMLを定義するスキーマファイル(リスト7)があらかじめ準備されているものと仮定して説明します.
XML初心者の方は,まだ,いまの時点で,スキーマを理解したり書けるようにならなくては!!と意気込まなくてもかまいません. Word2003で,こんなことが出来るんだな,ということを知っておくだけで,イザというときに役立ちます.
 では,リスト5のWord文書をもとに,リスト6のXML文書を作成する方法を見ていきましょう.
【リスト6】作成するXML文書の見本(list6.xml)
<?xml version="1.0"?>
<商品情報>
  <商品>
    <品名>エアコン</品名>
    <説明>空気の汚れを強力集じん.除菌効果も長続き.プラズマ脱臭効果,省エネ設計,電気代の節約にも.</説明>
  </商品>
  〜<商品>〜</商品>繰り返し〜
</商品情報>
【リスト7】リスト6のXML文書を定義するスキーマファイル (list7.xsd)
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:od="urn:schemas-microsoft-com:officedata">
<xsd:element name="商品情報">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="商品" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="generated" type="xsd:dateTime"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="商品">
<xsd:annotation>
<xsd:appinfo/>
</xsd:annotation>
<xsd:complexType>
<xsd:sequence>
<xsd:element name="品名" minOccurs="0" od:jetType="text" od:sqlSType="nvarchar">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="255"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="説明" minOccurs="0" od:jetType="text" od:sqlSType="nvarchar">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="255"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
@まず,タグ付けを行う原稿であるリスト5をWord2003で開きます.この文書に適用するXMLスキーマをテンプレートとして登録します.手順は,Word2003メニューの[ツール/テンプレートとアドイン]を選択し,[XMLスキーマ]タブをクリックします.[スキーマの追加]でlist7.xsdを指定します.[スキーマの設定]ダイアログが開きますので,URIに任意の名称(ここではproductInfo.xsd)を指定します(図24).
【図24】[スキーマの設定]ダイアログが開きますので,URIに任意の名称(ここではproductInfo.xsd)を指定します
[スキーマの設定]ダイアログが開きますので,URIに任意の名称(ここではproductInfo.xsd)を指定します
A[OK]ボタンをクリックすると,利用可能なXMLスキーマの一覧に,いま指定したスキーマが追加されます.(図25).
※図には「productInfo.xsd」以外の他のスキーマファイルが表示されていますが,これは筆者が他に登録しているスキーマファイルです.
【図25】指定したスキーマファイルが追加される
指定したスキーマファイルが追加される
B図25の画面で[OK]ボタンをクリックすると,図26のように,画面右の[XMLデータ構造]メニューの下方に「productInfo」のメニューが追加されます.
【図26】list7.xsd内で定義されている要素が表示される
list7.xsd内で定義されている要素が表示される
C図26の文章に登録したXMLスキーマに則ったタグを付けていきます.まず,ルート要素となる<商品情報>要素を追加するために,[XMLデータ構造]メニューの下方に表示されている「商品情報[productInfo]」を選択します.指定した要素を「文書全体に適用しますか?」というダイアログが表示されます (図27) .
【図27】指定したルート要素を文書全体に適用する
指定したルート要素を文書全体に適用する
D図27で[文書全体に適用]を選択します.<商品情報>要素はルート要素となりますので,文書全体に適用させる必要があります.図28のように,文書全体が<商品情報>要素で括られます.
【図28】ルート要素のタグが付いた
ルート要素のタグが付いた
E各品名と説明を<商品>要素で括る必要があります.1例として,エアコンとその説明を選択状態にし,「XMLデータ構造」メニューの下方にある,「商品[productInfo]」を選択します.エアコンとその説明が<商品>要素で括られます.冷蔵庫,除湿機に対しても同様な手順で<商品>要素を付け加えていきます(図29)
【図29】各商品のデータを<商品>要素で括る
各商品のデータを<商品>要素で括る
F[XMLデータ構造]メニューの下方に,<商品>要素の子要素が表示されます(図30).
【図30】[XMLデータ構造]メニューに<商品>要素の子要素が表示されている
[XMLデータ構造]メニューに<商品>要素の子要素が表示されている
G 「エアコン」「冷蔵庫」「j除湿機」を<品名>要素で括ります.「エアコン」を<品名>要素で括るには,「エアコン」を選択状態にし,図30の「品名」をクリックします.「エアコン」の説明を<説明>要素で括る場合も同じ手順を踏みます.「冷蔵庫」「除湿機」に関しても同様な手順で<品名><説明>要素で括っていきます(図31).
【図31】<品名>要素と<説明>要素のタグを追加する
タグを追加する
I以上で図26の文章にXMLのタグを付けることができました.それでは,このXMLを保存してみましょう.[ファイル/名前を付けて保存」を選択し,任意のファイル名を指定し(例ではlist6_2.xml),[データのみ保存]にチェックを付けて[保存]ボタンをクリックします(図32).
【図32】XMLファイルを保存する
XMLファイルを保存する
J保存されたXMLファイル(list6_2.xml)をIE6.0で開くと図33のように表示されます.
【図33】保存されたXMLファイルをIE6で開いた
保存されたXMLファイルをIE6で開いた
ここでは,短い文章を使いましたが,XMLなら,もっと長文のデータも扱うことができます.テーブルデータでは管理が面倒な,コピーや説明文を追加したXML文書や,マニュアルや小説などの文章もののタグ付けは,Word2003を利用すると便利です.
もどるもどる
メニューに戻るメニュー選択