ファイルメーカーProのページへ戻る


XML形式で検索結果(FMPXMLRESULT)を取得する

 ここまでは、-formatに「-dso_xml」を指定することで、XML形式のデータを取得してきました。ところで、-formatに「-fmp_xml」を指定しても、XML形式のデータを取得することができます。検索ページ「search.html」の
<input type="hidden" name="-format" value="-dso_xml">

<input type="hidden" name="-format" value="-fmp_xml">
に書き変えます。典型的な検索ページ「search.html」は、以下のようになります。

FMPXMLRESULT文法のXMLデータを取得するための検索ページ「search.htm」
<html>
	<head>
		<title>検索</title>
	</head>
	<body>
		<form action="fmpro" method="post" accept-charset="Shift_JIS">
			<input type="hidden" name="-db" value="xml_test.fp5">
			<input type="hidden" name="-lay" value="weblayout">
			<input type="hidden" name="-format" value="-fmp_xml">
			<input type="hidden" name="-max" value="all">
			<table>
				<tr>
					<th align="right">【name】</th>
					<td><select name="-op">
							<option value="cn" selected>を含む</option>
							<option value="bw">で始まる</option>
							<option value="eq">等しい</option>
							<option value="ew">で終わる</option>
						</select></td>
					<td><input type="text" name="name" value="" size="30"></td>
				</tr>
				<tr>
					<th align="right">【OS】</th>
					<td colspan="2"><input type="hidden" name="-op" value="eq"> <select name="OS">
							<option value="" selected>指定なし</option>
							<option value="Mac OS">Mac OS</option>
							<option value="Windows">Windows98</option>
							<option value="Windows NT">WindowsNT</option>
							<option value="Linux">Linux</option>
							<option value="BeOS">BeOS</option>
						</select></td>
				</tr>
				<tr>
					<th align="right">【price】</th>
					<td><select name="-op">
							<option value="gt">より高い</option>
							<option value="lt">より安い</option>
						</select></td>
					<td><input type="text" name="price" value="" size="30"></td>
				</tr>
				<tr>
					<th align="right">【color】</th>
					<td colspan="2"><input type="hidden" name="-op" value="eq"> <select name="color">
							<option value="" selected>指定なし</option>
							<option value="グラファイト">グラファイト</option>
							<option value="ルビー">ルビー</option>
							<option value="セージ">セージ</option>
							<option value="インディゴ">インディゴ</option>
							<option value="スノー">スノー</option>
						</select></td>
				</tr>
				<tr>
					<td align="center" colspan="3"><input type="submit" name="-find" value="検索実行"></td>
				</tr>
			</table>
		</form>
	</body>
							
</html>

 このページを表示すると、以下のようになります。

 検索ページの見た目は、FMPDSORESULT文法で結果を得るときに作ったページと何も変わりはありません。このページで検索を実行すると、次のようなFMPXMLRESULT文法で検索結果を取得できます。

 得られる検索結果は同じですが、XMLデータの構造が違っています。-formatに-dso_xmlを指定したときに得られるXMLデータをFMPDSORESULT文法、-fmp_xmlを指定したときに得られるXMLデータをFMPXMLRESULT文法と呼びます。今回のFMPXMLRESULT文法によるXMLデータには、空欄の許可/不許可、繰返し最大数、フィールドタイプ(テキスト、数字、日付、時刻、オブジェクト)、日付および時刻の書式、総レコード数、該当レコード数・・・などなど、FMPDSORESULT文法では得られない様々な情報が含まれています。

 XMLの構造は複雑になっています。FMPXMLRESULT要素を第1階層(ルート)として、第二階層にはERRORCODE要素とPRODUCT要素とDATABASE要素とMETADATA要素とRESULTSET要素の5つの子要素があります。

ERRORCODE要素
要素の値にエラー番号が入る。エラーがなければ要素値は0
PRODUCT要素
3つの属性を持ち、要素値は持たない。この要素の属性は、Webコンパニオン機能拡張に関する情報なので、検索結果そのものには関係しない。
DATABASE要素
5つの属性を持ち、要素値は持たない。この要素の属性は、データベースファイルに関する情報が納められている。

<ROW>タグ〜</ROW>タグで挟まれた部分がレコード1つ分に相当します。検索に該当したレコードの数だけROW要素が繰り返されます。ROW要素の下の階層(第三階層)には用途にあわせて、XMLの形式を使い分けるようにしましょう。>>


表1.ファイルメーカーが出力するXMLの文法とその特徴
-fromatの値文法名特徴
-dso_xmlFMPDSORESULTXMLデータの構造は比較的単純。埋め込まれている情報は必要最小限。初めのうちは、これで練習するのがいいと思う。
-fmp_xmlFMPXMLRESULTXMLデータの構造は比較的複雑。しかし埋め込まれている情報は多岐にわたる。繰返しフィールドやリレーションを組んでいるデータベースから情報を取り出す場合などは、この文法でデータを引き出す方がよい。