XVCDによるXML文書テンプレートの作成

XVCDを使用してドキュメントテンプレートを作成する手順を、簡単な例を示して説明します。

1. このチュートリアルの内容

繰り返し利用する文書をあとから何度も利用できる形にして保存した文書を「文書テンプレート」といいます。見積書やFAX送付状など、同じ形式の文書を作るときに便利です。

このチュートリアルでは、XVCDで利用するXML文書テンプレートの作成手順を、わかりやすさを優先した非常に簡単な例題を使い、順を追って見ていきます。「XVCDによるボキャブラリコンポーネントの作成」の「4. XML文書へのデータ構造の追加と削除」で使用した住所録を例にして説明します。XML文書テンプレートを作成するために必要なのは、XVCDファイルのみです。

このチュートリアルを実践するために必要な知識や、開発環境の準備については、「XVCDで開発する環境の準備」をご覧ください。また、このチュートリアルを実践する前に、「XVCDによるボキャブラリコンポーネントの作成」を読み終えていることを想定しています。

このチュートリアル内のサンプルコードは、xfy Developer's Toolkit 配布パッケージ内のdoc/samples/developers/tutorial/document_template_tutorialに収録されています。xfy Developer's Toolkitには、このチュートリアルのほかにも豊富なXVCDサンプルが用意されています。ぜひ、それらのサンプルもご覧ください。

なお、このチュートリアルでは、xfyユーザーエージェントとして、xfy Basic Editionに含まれるxfy Clientを使用します。チュートリアルを進めるときは、xfy Clientでブラウズバーを表示すると便利です。xfy Clientをインストールした直後は、ブラウズバーは表示されていません。ブラウズバーを表示するには、[表示 - ブラウズバー]を選択します。

2. 住所録テンプレートのイメージ

まず、住所録のテンプレートをどのように表示させればよいかを考えましょう。文書テンプレートを開くたびに次のように表示されれば、住所録のテンプレートを作成したことになります。

住所録のテンプレート
住所録の文書テンプレート

3. 住所録テンプレートの作成

住所録のテンプレートを作成するには、XVCD内で住所録用のXML文書テンプレートを定義します。XML文書テンプレートは、 xvcd:xvcd要素の子要素として記述した xvcd:document-template要素の内容に定義します。

xvcd:document-template要素の内容には、文書テンプレートとして使用したいXML文書フラグメントを記述します。今回の場合、文書テンプレートとして使用したいのは、次のXML文書フラグメントです。

<ab:addressbook xmlns:ab="http://xmlns.example.com/developer/tutorial/addressbook"> 
    <ab:entry>
        <ab:person></ab:person>
        <ab:address></ab:address>
    </ab:entry>
</ab:addressbook>

文書テンプレートには名前を付ける必要があります。ユーザーが文書テンプレートを使用するときは、[ファイル - 新規作成]を選択すると表示される[新規作成]ダイアログボックスで、使用する文書テンプレートの名前を選択します。

住所録の文書テンプレート定義は以下のようになります。 住所録の文書テンプレートの名前は、「AddressBook」としています。

<xvcd:document-template name="AddressBook" target="common">
    <ab:addressbook xmlns:ab="http://xmlns.example.com/developer/tutorial/addressbook"> 
        <ab:entry>
            <ab:person></ab:person>
            <ab:address></ab:address>
        </ab:entry>
    </ab:addressbook>
</xvcd:document-template>

xvcd:document-template要素のtarget属性の値には、commonを指定します。target属性を省略したり、target属性の値にprivateを指定したりすると、XML文書テンプレートをxfyプラットフォームに登録できないので注意してください。

ここまでの内容をAddressBook.xvcdに反映すると、次のようになります。 強調文字で表記した箇所が、追加・変更された箇所です。

<?xml version="1.0"?>

<xvcd:xvcd
    xmlns:xvcd="http://xmlns.xfy.com/xvcd" 
    xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ab="http://xmlns.example.com/developer/tutorial/addressbook"
    version="1.0">
	
<!-- =============================================
	文書テンプレート記述
===============================================	-->
	<xvcd:document-template name="AddressBook" target="common">
		<ab:addressbook xmlns:ab="http://xmlns.example.com/developer/tutorial/addressbook"> 
			<ab:entry>
				<ab:person></ab:person>
				<ab:address></ab:address>
			</ab:entry>
		</ab:addressbook>
	</xvcd:document-template>

<!-- =============================================
	ボキャブラリ定義
===============================================	-->
    <xvcd:vocabulary name="AddressBook" match="ab:addressbook" call-template="root"/>

<!-- =============================================
	テンプレートルール
===============================================	-->

    <xvcd:template name="root">
        <html>
            <body>
                <table border="1" width="100%">
                    <tr>
                        <th width="150">
                            Name
                        </th>
                        <th>
                            Address
                        </th>
                    </tr>
                   <xvcd:apply-templates select="ab:entry"/>
                </table>
            </body>
        </html>
    </xvcd:template>

    <xvcd:template match="ab:entry">
        <tr>
            <td>
                <xvcd:apply-templates select="ab:person"/>
            </td>
            <td>
                <xvcd:apply-templates select="ab:address"/>
            </td>
        </tr>
    </xvcd:template>

    <xvcd:template match="ab:person">
        <xvcd:text-of select="." filler="Enter the name here."/>
    </xvcd:template>

    <xvcd:template match="ab:address">
        <xvcd:text-of select="." filler="Enter the address here."/>
    </xvcd:template>
</xvcd:xvcd>

編集が完了したら、AddressBook3.xvcdとして保存します。

4. 住所録テンプレートの保存

「XVCDによるボキャブラリコンポーネントの作成」の「5.2. ボキャブラリコンポーネントのインストール」で説明しているように、xfy Clientをインストールしたフォルダの中に、scriptsフォルダが存在します。このscriptsフォルダに、作成したAddressBook3.xvcdを保存します。XVCDによるXML文書テンプレートの作成はこれで終了です。

xfyプラットフォームは、起動時にAddressBook3.xvcdを参照し、その中に含まれる xvcd:document-template要素の記述に基づいてXML文書テンプレートを登録します。

XML文書テンプレートが記述されているXVCDファイルから、xfyプラグインJARファイルを作成することもできます。この場合、作成したxfyプラグインJARファイルを所定のフォルダに配置すると、XML文書テンプレートをxfyプラットフォームに登録できます。XVCDファイルからxfyプラグインJARファイルを作成して利用する手順について、詳しくは「XVCDプラグイン化ツールを使ったxfyプラグインの作成」をご覧ください。

5. xfy Clientで表示

では、xfy Clientで住所録の文書テンプレートを表示させましょう。次の手順で操作します。

  1. xfy Clientを起動します
    すでに xfy Clientを起動している場合は、いったん終了して再起動します。
  2. [ファイル - 新規作成]を選択します
    [新規作成]ダイアログボックスが表示されます。
  3. XML文書テンプレートの一覧から、AddressBookを選択して[開く]をクリックします

下の図のように、住所録の文書テンプレートが表示されましたか?

住所録のテンプレート
住所録の文書テンプレート

また、xfy ClientのドキュメントランチャーエリアからXML文書テンプレートを呼び出すこともできます。

6. まとめ

ここで学んだことをまとめておきます。