気の向くままに辿るIT/ICT/IoT
XSLT

【Messages / メッセージ】XSLT 2.0/XSL Transformations Version2.0/Extensible Stylesheet Language Transformations Version2.0

ホーム前へ次へ
XSLTのメッセージとは?

【Messages / メッセージ】XSLT 2.0/XSL Transformations Version2.0/Extensible Stylesheet Language Transformations Version2.0

XSLT 2.0メッセージとは

 W3C勧告XSLTバージョンXSLT 2.0の「Messages / メッセージ」

 XSL Transformations (XSLT) Version 2.0 / W3C Recommendation 23 January 2007の目次に沿った日本語訳です。

 当サイト管理人が2009年04月、意訳したものですが、構文解釈の違いや翻訳の違いが含まれるかもしれません。正式文書はW3C 各種仕様書(英語版)である事を予めご了承ください。

<< 16. 新規追加された機能 / Additional Functions

XSLT 2.0メッセージ目次


17 メッセージ / Messages

17 メッセージ

<!-- カテゴリ: 命令 -->
<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 >>


ホーム前へ次へ