• 検索結果がありません。

スタイルシートの内部で拡張関数を使用します。

ドキュメント内 FileMaker Server Custom Web Publishing with XML and XSLT (ページ 69-73)

FileMaker XSLT 拡張関数と引数の使用

3. スタイルシートの内部で拡張関数を使用します。

次の例で、XPath ステートメントを使用して拡張関数を呼び出す方法を示します。

この1番目の例では、フォントの色を緑("#009900")に設定します。

<font color= {fmp-ex:getValueColor(50)} >値は 50 です</font>

この2番目の例では、フォントの色を赤("#CC0000")に設定します。

<font color= {fmp-ex:getValueColor(-500)} >値は -500 です</font>

拡張関数の例

上記の処理で使用される簡単な JavaScript 関数は、<xsl:choose> ステートメントを使用して実装できたと思われます。

スクリプト拡張を使用する本当の利点は、XSLT や XPath だけでは実装できない関数を作成できることです。

たとえば、ユーザ所属の企業用の内部ポータルサイトを構築し、そのポータルページで現在の株価情報を載せるとし ます。XML ストックフィードを使用できますが、これらへのアクセスには一般的に、商用ライセンスが必要です。

ただし、Yahoo! Web サイトからコンマ区切り値(CSV)ドキュメント形式で株価データをダウンロードすることが できます。XPath document() 関数では、XML ソースからコンテンツをインポートできますが、CSV コンテンツを XML に変換する必要があります。1つの解決策として、JavaScript を使用して CSV の株価情報をダウンロードし、

そのファイルを解析してデータを抽出する方法があります。

次の URL は、Yahoo! Web サイトから CSV ファイルとして株価情報を取得するための構文を示します。

http://quote.yahoo.com/d/quotes.csv?s=<ティッカ>&f=l1gh&e=.csv

ここで、<ティッカ> は、データを取得しようとする株式コードを示します。

返されるデータは、次のようなコンマ区切りの3つの数字です。

31.79,31.17,32.12

ここで1番目の値は最後の取引価格であり、2番目の値はその日の最低価格であり、3番目の値はその日の最高価格 です。

次の例では、現在の株価情報を Yahoo! Web サイトから取得してこれを XPath 関数を介して使用可能にさせる JavaScript XSLT 拡張関数を示します。

<?xml version="1.0" encoding="UTF-8"?>

<xsl:stylesheet

exclude-result-prefixes="xsl fmxslt fmrs xalan fmp-ex"

version="1.0"

xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

xmlns:fmrs="http://www.filemaker.com/xml/fmresultset"

xmlns:fmxslt="xalan://com.fmi.xslt.ExtensionFunctions"

xmlns:xalan="http://xml.apache.org/xslt"

xmlns:fmp-ex="ext1"

>

<?xslt-cwp-query params="-grammar=fmresultset&-process" ?>

<xsl:output method="html"/>

<xalan:component prefix="fmp-ex" functions="include get_quote" >

<xalan:script lang="javascript">

function include(url) {

var dest = new java.net.URL(url);

var dis = new java.io.DataInputStream(dest.openStream());

var res = "";

while ((line = dis.readLine()) != null) {

res += line + java.lang.System.getProperty("line.separator");

} dis.close();

return res;

}

function get_quote(ticker) {

url = "http://quote.yahoo.com/d/quotes.csv?s=”+

"+ticker+"&amp;f=l1gh&amp;e=.csv";

csv_file = include(url);

var str_tokenizer = new java.util.StringTokenizer(csv_file, ',');

// the first token is the last trade price var last = str_tokenizer.nextToken();

return last;

}

</xalan:script>

</xalan:component>

<xsl:template match="/fmrs:fmresultset">

<html>

<body>

<font size="2" face="verdana, arial">

Apple 株価:<xsl:value-of select="fmp-ex:get_quote('AAPL')"/>

</font>

</body>

</html>

</xsl:template>

</xsl:stylesheet>

第 6 章  

|

FileMaker XSLT スタイルシートの開発     71

Web 公開エンジンがこのスタイルシートを処理するときには、Yahoo! Web サイト からの株価情報が必要です。

get_quote() 関数によって、株価情報のデータが解析され、そのデータがスタイルシートに返されます。変換された出 力が、ブラウザに表示されます。

ドキュメント内 FileMaker Server Custom Web Publishing with XML and XSLT (ページ 69-73)