.NET Framework 2.0で改善されたXSLTVisual Studio Magazine(4/5 ページ)

» 2005年01月24日 11時30分 公開
[Thiru Thangarathinam,FTPOnline]

拡張オブジェクトのメソッドを呼び出す

 さて次に、スタイルシートから拡張オブジェクトのメソッドを呼び出してみよう。たとえば、商品一覧をカテゴリ別に異なる背景色で表示したいとしよう。このような処理は、拡張オブジェクトを使うことで実現できる。

 まずは、コードディレクトリにBGColorと名付けた新しいクラスを作ることからはじめる。このクラスは、与えられたカテゴリIDごとに返す背景色を決定するものだ(リスト5)。

リスト5■背景色を返す(C#)。ReturnBGColorメソッドの実装は素直だ。引数として渡されたカテゴリIDに基づき適切な背景色を返すだけだ
public class BGColor
{
public string ReturnBGColor(int categoryID)
{
string bgColor=null;
switch (categoryID)
{
case (1):
bgColor = "#FFFFC0";
break;
case (2):
bgColor = "#80FF80";
break;
case (3):
bgColor = "#FFE0C0";
break;
case (4):
bgColor = "#C0C0FF";
break;
case (5):
bgColor = "#C0FFFF";
break;
case (6):
bgColor = "#FFC0FF";
break;
case (7):
bgColor = "#FFC0C0";
break;
case (8):
bgColor = "#C0FFC0";
break;
}
return (bgColor);
}
}

 色の決定は非常に単純だ。次にスタイルシートからいま実装したReturnBGColorメソッドを呼び出したい。そのためには、ProductsPaging.xlファイルにおいて、下記太字の部分を加える。

<?xml version="1.0" ?>
<xsl:stylesheet version="1.0" xmlns:xsl=
"http://www.w3.org/1999/XSL/Transform"
xmlns:myColor="urn:myColor">
<xsl:output method="html" />
…略…
<!-- 個別の行に関するそれぞれのレコード -->
<xsl:element name="tr">
<xsl:attribute name="bgcolor">
<xsl:value-of select=
"myColor:ReturnBGColor(CategoryID)" />
</xsl:attribute>
<xsl:element name="td">
<xsl:value-of select="ProductID" />
</xsl:element>
…略…
</xsl:stylesheet>

 拡張オブジェクトと名前空間URIとを関連付けるには、xslstylesheet要素で属性「xmlns:myColor="urn:myColor"」を指定する。いちどオブジェクトと名前空間URIとを関連付ければ、それがあたかもスタイルシートの一部かのように、該当オブジェクトのメソッドを呼び出せるのだ。

<xsl:value-of select=
"myColor:ReturnBGColor(CategoryID)" />

 この行は、カテゴリIDを渡してBGColorクラスのReturnBGColorメソッドを呼び出す。次のステップは、拡張オブジェクトのメソッドを呼び出せるように、拡張オブジェクトをスタイルシートに渡すことだ(リスト6)。

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ