特集
.NET Framework 2.0で改善されたXSLT:Visual Studio Magazine(4/5 ページ)
XMLとHTMLの架け橋「XSLT」。.NET Framework 2.0のXSLTは、性能向上と一貫した変換アプローチを図った。この特集では、2.0で置き代わるXSLTプロセッサについて、具体的な手法を挙げる。
拡張オブジェクトのメソッドを呼び出す
さて次に、スタイルシートから拡張オブジェクトのメソッドを呼び出してみよう。例えば、商品一覧をカテゴリ別に異なる背景色で表示したいとしよう。このような処理は、拡張オブジェクトを使うことで実現できる。
まずは、コードディレクトリにBGColorと名付けた新しいクラスを作ることからはじめる。このクラスは、与えられたカテゴリIDごとに返す背景色を決定するものだ(リスト5)。
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);
}
}
リスト5■背景色を返す(C#)。ReturnBGColorメソッドの実装は素直だ。引数として渡されたカテゴリIDに基づき適切な背景色を返すだけだ
色の決定は非常に単純だ。次にスタイルシートからいま実装した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.