次の方法で共有


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 を生成します。その結果、> < ' " & などの文字が、それぞれ「&gt;」、「&lt;」、「&apos;」、「&quot;」、「&amp;」のように、実体参照で記述されます。

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&apos;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; から &amp;amp; への変換など) がなくなります。DisableEscaping 属性の詳細については、「XSLT コンテンツ フォーマッタの定義」を参照してください。

  • & などの予約文字がイベント データに含まれる場合は、コンテンツ フォーマッタの DisableEscaping 属性を false に設定します。これにより、コンテンツ フォーマッタが最終変換を実行する前に予約文字を有効な XML に変換するようになります。詳細については、「XML の予約文字」を参照してください。

参照

概念

XSLT ファイルの場所
XSLT コンテンツ フォーマッタの定義
コンテンツ フォーマッタの構成

その他の技術情報

通知クラスの定義
Notification Services アプリケーションの定義

ヘルプおよび情報

SQL Server 2005 の参考資料の入手