XSLT ファイルの作成
コンテンツ フォーマッタは、通知クラスごとに 1 つ以上の XSLT ファイルを使用して通知を書式設定します。各通知の中間 XML データを書式設定されたメッセージに変換するには、XSLT ファイルを定義します。
中間 XML データ
ディストリビュータは、書式が未設定の各通知データを XML ドキュメントに変換します。ダイジェスト以外の通知の場合、XML ドキュメントは次のようになります。
<notifications>
<notification>
<FieldName>value</FieldName>
<FieldName>value</FieldName>
...
</notification>
</notifications>
notification 要素内の各要素の名前は、アプリケーション定義で指定した通知フィールドの名前を反映し、各要素の値は通知フィールドの値に等しくなります。通知データは、通知テーブルの通知フィールドのほか、計算された通知フィールドで構成されます。
たとえば、ディストリビュータは株式通知用に次のような XML ドキュメントを生成できます。
<notifications>
<notification>
<StockSymbol>AWKS</StockSymbol>
<StockPrice>55.02</StockPrice>
</notification>
</notifications>
ダイジェスト通知の場合は、別の notification 要素がスキーマに追加されます。
<notifications>
<notification>
<FieldName>value</FieldName>
...
</notification>
<notification>
<FieldName>value</FieldName>
...
</notification>
</notifications>
中間 XML のすべての値が文字列になり、XML 内の通知フィールドの順序は保証されません。
日付や数値を表す中間 XML のフィールド値は、通知のロケールに適した形式になります。たとえば、English-United States ロケールの日付は MM/DD/YYYY の形式となりますが、Japanese-Japan ロケールの日付は YYYY/MM/DD の形式になります。通知の内容に追加の翻訳や変換を加えるかどうかは、アプリケーション開発者に任されています。
XSL 変換
Notification Services は XSLT ファイルを検証しません。また、変換に制約を強制することもありません。変換は、有効な XML またはプレーン テキストを生成する必要があります。ただし、この 2 つのオプションを使用することにより、ほぼすべての種類のドキュメントを生成できます。
上記の通知データの HTML ドキュメントを生成する場合は、次のような XSL 変換を作成できます。
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="notifications">
<html>
<body>
<xsl:apply-templates/>
<i>Thank you for using SQL Server
Notification Services.</i>
</body>
</html>
</xsl:template>
<xsl:template match="notification">
<b><xsl:value-of select="StockSymbol" /></b>
is now trading at: <b>
$<xsl:value-of select="StockPrice" /></b><br/>
<br/><br/>
</xsl:template>
</xsl:stylesheet>
プレーン テキストの生成
XSLT コンテンツ フォーマッタは、既定で有効な XML を生成します。その結果、> < ' " & などの文字が、それぞれ「>」、「<」、「'」、「"」、「&」のように、実体参照で記述されます。
xsl:output 要素を XSLT ファイルに含める場合、テキスト出力を生成するようにフォーマッタを構成できます。次の例は、変換を実行せずに、送信された内容をそのまま返す XSL 変換を示しています。
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:template match="*">
Today's Notifications:
<xsl:copy-of select = "." />
</xsl:template>
</xsl:stylesheet>
XSLT のヒント
次のヒントは、XSLT ファイルの作成に役立つ場合があります。
次のコードは、ディストリビュータが書式が未設定の通知データから生成した中間 XML ドキュメントをそのまま返す XSLT ファイルの作成方法を示しています。この変換を使用した場合、コンテンツ フォーマッタは変換を実行せずに、書式が未設定の通知データをそのまま渡します。このパススルー変換を使用すると、XML ドキュメントを確認したり、好みの開発ツールを使用して XSLT ファイルを作成することができます。
<?xml version="1.0" encoding="UTF-8" ?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="*"> <xsl:copy-of select = "." /> </xsl:template> </xsl:stylesheet>
XML を自動的にインデントするには、xsl:output 要素の indent 属性を使用します。
<xsl:output method="xml" indent="yes"/>
イベント データに実体参照または XML の一部が含まれる場合、コンテンツ フォーマッタの DisableEscaping 属性を true に設定します。これにより、コンテンツ フォーマッタによるデータの過剰な変換 (& から &amp; への変換など) がなくなります。DisableEscaping 属性の詳細については、「XSLT コンテンツ フォーマッタの定義」を参照してください。
& などの予約文字がイベント データに含まれる場合は、コンテンツ フォーマッタの DisableEscaping 属性を false に設定します。これにより、コンテンツ フォーマッタが最終変換を実行する前に予約文字を有効な XML に変換するようになります。詳細については、「XML の予約文字」を参照してください。
参照
概念
XSLT ファイルの場所
XSLT コンテンツ フォーマッタの定義
コンテンツ フォーマッタの構成
その他の技術情報
通知クラスの定義
Notification Services アプリケーションの定義