W3C勧告XSLTのバージョンXSLT 2.0の「Messages / メッセージ」
XSL Transformations (XSLT) Version 2.0 / W3C Recommendation 23 January 2007の目次に沿った日本語訳です。
当サイト管理人が2009年04月、意訳したものですが、構文解釈の違いや翻訳の違いが含まれるかもしれません。正式文書はW3C 各種仕様書(英語版)である事を予めご了承ください。
<< 16. 新規追加された機能 / Additional Functions
17 メッセージ / Messages |
<!-- カテゴリ: 命令
-->
<xsl:message
select? = expression
terminate? = { "yes" | "no" }>
<!-- Content: sequence-constructor
-->
</xsl:message>
xsl:message
命令は、implementation-defined方法でメッセージを送ります。
xsl:message
命令は、新しい文書の作成の要因であり、それは、典型的にシリアライズされ、
implementation-defined目的を出力します。
xsl:message
命令の結果は、カラのシーケンスです。
メッセージの内容は、付加的な select
属性と
xsl:message
命令の内容を形成するシーケンスコンストラクタ
のいずれか、または、双方を利用する事によって記述される場合があります。
もし、 xsl:message
命令が、シーケンスコンストラクタを含む場合には、
このシーケンスコンストラクタを評価する事によって含んだシーケンスは、
5.7.1 複雑なコンテンツを構築するで記述したように、新しい文書ノードの内容を構築する為に利用されます。
もし、 xsl:message
命令が、 select
属性を持つ場合には、
属性の値は、XPath 式にしなければいけません。
xsl:message
命令の効果は、その時、
シーケンスコンストラクタが開始位置に追加されたこの select
属性を伴う
単独の xsl:copy-of
命令と同じです。
もし、 xsl:message
命令が、存在しない内容と存在しない select
属性を持つ場合には、
カラのメッセージが生成されます。
xsl:message
命令によって生成したツリーは、技術的には(厳密に言えば[technically])最終結果ツリーではありません。
そのツリーは、存在しないURIを持ち、また、プロセッサは、アプリケーションにアクセス可能なツリーを作る事を要求されません。
注釈:
多くのケースでは、 xsl:message
を利用して生成したXML文書は、単独のテキストノード自身が持っている文書ノードで構成されるでしょう。
しかしながら、それは、より複雑な構造を含む場合があります。
注釈:
手法は、警告ボックスをポップアップする事によって、または、ログファイルを書き込む事によって xsl:message
を提供するかもしれません。
なぜなら、命令の実行の指定は、implementation-definedであり、 このようなメッセージ出現における指定は予測通りにはならないからです。
terminate
属性は、属性値テンプレートとして解釈されます。
もし、 terminate
属性の有効な値が、 yes
である場合には、
プロセッサは、メッセージを送った後、終了処理(terminate処理)しなければいけません。
既定値は、 no
です。
注記としては、命令の評価の指定が、implementation-dependentである為、
いくつかの固有の命令の存在しない保証を与えるこれは、終了処理(terminate処理)する前に評価するか、または、評価されないでしょう。
[ERR XTMM9000]
変換が xsl:message terminate="yes"
の利用によって終了(terminate)される際には、その効果は、
変換中に回復されない動的エラーが出現する際と同じです。
ローカリゼーションを行う便利な方法の一つは、スタイルシートに付加的な入力ファイルを持ってくるXML文書にあるローカライズした情報(メッセージテキスト等々)を用いる事です。
例えば、フォームにXMLファイル resources/L.xml
の中に記憶される言語 L
におけるメッセージがあるとします:
<messages> <message name="problem">A problem was detected.</message> <message name="error">An error was detected.</message> </messages>
その時、スタイルシートは、次に続くローカライズメッセージへのアプローチを利用する事が可能です:
<xsl:param name="lang" select="'en'"/> <xsl:variable name="messages" select="document(concat('resources/', $lang, '.xml'))/messages"/> <xsl:template name="localized-message"> <xsl:param name="name"/> <xsl:message select="string($messages/message[@name=$name])"/> </xsl:template> <xsl:template name="problem"> <xsl:call-template name="localized-message"> <xsl:with-param name="name">problem</xsl:with-param> </xsl:call-template> </xsl:template>
18. 拡張と縮退 / Extensibility and Fallback >>