XSL パラメーター / XQuery 実行

www.altova.com このトピックを印刷 前のページ 1つ上のレベル 次のページ

ホーム >  ユーザーマニュアル > メニューコマンド > XSL/XQuery メニュー >

XSL パラメーター / XQuery 実行

XSL/XQuery | XSL パラメーター/XQuery 変数」コマンドにより、XSLT 入力パラメーター/XQuery 外部変数ダイアログが表示されます(スクリーンショットを参照)。XSLT スタイルシートに渡すパラメーターの名前や、XQuery ドキュメントへ渡す XQuery 変数の名前と、対応する値を入力します。XMLSpy においてこれらのパラメーターは以下のように使用されます:

 

·

XSL/XQuery メニューの XSL 変換コマンドが XML ドキュメントの変換に使用される際、ダイアログ内にて保存されたパラメーター値が選択された XSLT ドキュメントへ渡され、変換に使用されます。

·

XSL/XQuery メニューの XQuery 実行コマンドが XQuery ドキュメントの処理に使用される際、ダイアログにて現在保存されている XQuery 外部変数の値が XQuery ドキュメントに渡され、実行に使用されます。

 

メモ:XSLT 入力パラメーター/XQuery 外部変数ダイアログにて入力されたパラメーターや変数は、内蔵の Altova XSLT エンジンに対してのみ使用されます。MSXML やその他の外部エンジンに対してパラメーターは渡されません。 このため、 MSXML 、または、構成済みの外部エンジンを使用する場合、これらの値がエンジンにパスされます。

 

メモ:XSLT 入力パラメーター/XQuery 外部変数 ダイアログ内で XSLT パラメーター、または、外部 XQuery 変数 を定義することはエラーではありませんが、XSLT/XQuery ドキュメント、または、変換内では使用されません。

 

XSLT パラメーターの使用

パラメーターに対して入力した値は引用句無しの XPath 条件式や、引用句無しのテキスト文字列となります。アクティブなドキュメントが XSLT ドキュメントの場合、XSL から取得ボタンが有効になります。このボタンをクリックすることで、XSLT にて宣言されているパラメーターが、デフォルト値とともにダイアログに入力されます。この操作により、宣言されたパラメーターを素早く入力し、デフォルト値を必要に応じて変更することができます。

xsl_parameters

メモパラメーター値がダイアログに入力されると、明示的に削除、または、アプリケーションが再起動されるまですべての変換で使用されます。ダイアログ内に入力されるパラメーターはそのセッションのアプリケーションレベルで指定され、この時点から IDE を使用して実行される各変換のためのそれぞれの XSLT ドキュメントためにパスされます。 これは以下を意味します:

 

パラメーターは特定のドキュメントに割り当てられているのではありません。
ダイアログにて入力されたパラメーターは、 XMLSpy の終了時に削除されます。

 

XSLT パラメーターの使用例

国名とそれぞれの首都を含む XML ドキュメントは以下のとおりです:

 

<document>

   <countries>

      <country name="USA" capital="Washington DC"/>

      <country name="UK" capital="London"/>

      <country name="France" capital="Paris"/>

      <country name="Russia" capital="Moscow"/>

      <country name="China" capital="Beijing"/>

   </countries>

</document>

 

次の XSLT ドキュメントは、 XML ファイルから国名と首都を表示する XML ドキュメントを生成します。 country という名前を持つパラメーターの値として名前を入力することにより国名は選択されます(以下では黄色のハイライトにより表示されています)。

 

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

   <xsl:param name="country" select="'USA'"/>

   <xsl:template match="countries">

      <xsl:for-each select="country[@name=$country]">

         <country>

            <name><xsl:value-of select="$country"/></name>

            <capital><xsl:value-of select="@capital"/></capital>

         </country>

      </xsl:for-each>

   </xsl:template>

</xsl:stylesheet>

 

この XSLT ドキュメントが上記の XML ドキュメントで実行されると、結果は以下のようになります:

 

<country><name>USA</name><capital>Washington DC</capital></country>

 

XSLT 入力パラメーター/XQuery 外部変数 ダイアログ内で country という名前のパラメーターが作成され、値が与えられると、新規のパラメーターの値は、 XSLT 変換内のパラメーターにパスされます(上のスクリーンショット参照)。 この値は変換のために XSLT スタイルシート内のパラメーター country にパスされます。このようにして、異なるパラメーターへ異なる値をランタイムにパスすることができます。

 

メモ:

 

XSL:FO 変換コマンド(「XSL/XQuery | XSL:FO 変換」)を使用する場合、ダイアログにて入力された値はスタイルシートへ渡されません。これらのパラメーターを PDF 出力にて使用するには、まず XSLT 変換コマンド(「XSL/XQuery | XSL 変換」)を使用して XML から FO ドキュメントへの変換を行い、その後 XSL:FO 変換コマンド(XSL/XQuery | XSL:FO 変換)により FO から PDF への変換を行う必要があります。
内蔵されている Altova XSLT エンジン以外の XSLT プロセッサーを使用する場合、ダイアログにて入力されたパラメーターは外部プロセッサーへ渡されません。

 

外部 XQuery 変数の使用

外部 XQuery 変数に対して入力する値は、引用句無しの XPath 条件式か、引用句により分離されたテキスト文字列となります。外部変数のデータ型は、XQuery ドキュメントの変数宣言にて指定されます。

xquery_variables

メモ:外部 XQuery 変数がダイアログにて一度入力されると、そのエントリーが明示的に削除されるかアプリケーションが再起動されるまで、その後の実行でもそれらの変数が使用され続けます。ダイアログにて入力された変数はアプリケーションレベルで指定されており、その後行われる実行のたびに関連する XQuery ドキュメントへ渡されます。これは以下のように言い換えることもできます:

 

変数は特定のドキュメントに割り当てられているのではありません。
ダイアログにて入力された変数は、アプリケーション (XMLSpy) の終了時に削除されます。

 

外部 XQuery 変数の使用例

以下の例では、変数 $first が XQuery ドキュメントにて宣言され、FLWOR ステートメントの return 句にて使用されます:

 

 xquery version "1.0";

 declare variable $first as xs:string external;

 let $last := "Jones"

 return concat($first, " ", $last )

 

(XSLT 入力パラメーター/XQuery 外部変数ダイアログにて入力された)外部変数に Peter がセットされている場合、XQuery により Peter Jones という値が返されます。以下の点に注意してください:

 

XQuery ドキュメントの変数宣言にある external キーワードにより、この変数が外部変数であるということが認識されます。
静的な変数の型定義はオプションです。変数の宣言時に変数のデータ型が定義されていない場合、変数の値は xs:untypedAtomic に割り当てられます。
XQuery ドキュメントにて外部変数が宣言されているが、その変数名に対して外部変数が与えられない場合、エラーとなります。
外部変数が宣言され、XSLT 入力パラメーター/XQuery 外部変数ダイアログにて入力された場合、実行されるのは XQuery ドキュメントのスコープ内となります。XQuery ドキュメントにて新たな変数が同じ名前で宣言されている場合、その変数によりスコープ内の外部変数が一時的にオーバーライドされます。例えば、以下にある XQuery ドキュメントでは、(外部変数により $first に対して Peter という値が渡されているにも関わらず) Paul Jones という値が返されます。

 

 

xquery version "1.0";

declare variable $first as xs:string external;

let $first := "Paul"

let $last := "Jones"

return concat($first, " ", $last )

 

 

 


(C) 2019 Altova GmbH