デザインフラグメント

www.altova.com すべてを展開/折りたたむ このトピックを印刷 前のページ 1つ上のレベル 次のページ

ホーム >  SPS ファイル: 構造 > テンプレートと デザインフラグメント >

デザインフラグメント

デザインフラグメントは、ドキュメント内の様々な箇所で再利用することができるパーツを作成するために使用することができます。以下に使用するための手順を示します:

 

1.デザインフラグメントのコンテンツを入力する
2.デザインフラグメントのコンテンツを入力する
3.テンプレート内にある目的の位置にデザインフラグメントを挿入する.

 

デザインフラグメントのコンテンツを入力する

以下の操作によりデザインフラグメントを作成することができます:

 

1.デザインツリーならびにスキーマツリーにて、ツリー内部にあるデザインフラグメントアイテムの右側に配置されているデザインフラグメントの追加アイコン icAddNew をクリックします(以下のスクリーンショットを参照)。この操作によりツリーのデザインフラグメントリストにデザインフラグメントアイテムが追加されます(以下のメモも参照ください)。

 

SS_DesTreeAddDesFrag1a

 

デザインフラグメントが SPS デザイン内部に作成されます。このテンプレートはデザイン内に既にあるテンプレートへ追加されます。StyleVision のデザインフィルター ツールバーにある表示/隠すアイコンによりメインテンプレートとグローバルテンプレートを隠すことで、デザイン内にあるデザインフラグメントだけを確認することができます。デザインフラグメントテンプレートはスキーマツリーにも表示され、素早いアクセスを行うことができます。

2.デザインツリーまたはスキーマツリーにあるデザインフラグメントアイテムをダブルクリックすることで、その名前を編集することができます。目的の名前を入力し、Enter キーを押下してください。編集された名前がデザインツリーとデザイン内部のテンプレートに表示されます。

 

SS_DesFragNaming1a

 

3.デザインにてデザインフラグメントテンプレートのコンテンツを作成します。以下ではその方法について記述されます。

 

 

メモ:既存のテンプレートからデザインフラグメントを作成する場合、そのテンプレートを右クリックして、コンテキストメニューからデザインフラグメントの作成コマンドを選択します。この操作により、選択されたテンプレートからデザインフラグメントが作成されます。デザインフラグメントのテンプレートがデザイン下部にある既存のデザインフラグメントテンプレートに追加され、デザインツリーとスキーマツリーへ追加されます。この方法によりデザインフラグメントを作成すると、選択されたテンプレートもデザインフラグメントとなり、 デザインツリーやスキーマツリーから挿入.

 

デザインフラグメントのコンテンツを作成する

デザインフラグメントテンプレートのコンテンツは、 その他のテンプレートと同様の方法で作成されます。静的コンテンツを挿入するには、カーソルをデザインフラグメントのテンプレート内部へ移動させ目的の静的コンテンツを挿入します。動的コンテンツを挿入するには、目的のスキーマノードをデザインフラグメントのテンプレート内部へドラッグします。

 

スキーマソースからノードをドラッグするには、(i) グローバル要素ツリーから、または (ii) ルート要素ツリーからノードをドラッグします。これら2つの方法には違いがあり、ノードがグローバル要素ツリーからドラッグされた場合、祖先要素無しに作成されるため、テンプレート内で使用される場合には、親のコンテキスト内部で使用される必要があります(以下のスクリーンショットにある EmailPerson デザインフラグメントを参照)。一方でルート要素ツリーからノードがドラッグされた場合、ドキュメントノードの構造とともにノードが作成され、テンプレート内部の任意の場所で使用することができます(以下のスクリーンショットにある EmailDocNode デザインフラグメントを参照)。

 

SS_DesFragContent

 

上のスクリーンショットでは、2つのデザインフラグメントテンプレートが示されており、Person 要素に対して同一の出力が生成されます。EmailPerson デザインフラグメントテンプレートでは、グローバル要素の PersonEmailPerson テンプレートへドラッグすることで Person ノードが作成されます。EmailDocNode デザインフラグメントテンプレートでは、ルート要素ツリーから Person ノードがドラッグされ、(ドキュメントノードを表す $XML からの)絶対パスとともにノードが作成されます。

 

これらデザインフラグメントのテンプレートがメインテンプレートへ挿入される場合、EmailPerson テンプレートが Person ノードの親ノードのコンテキスト内部から呼び出される様にする必要があります。このサンプルは (マイ) ドキュメントフォルダー 以下にある C:\Documents and Settings\<username>\My Documents\Altova\StyleVision2019\StyleVisionExamples\Tutorial\DesignFragments 内の Email.sps ファイルにて確認することができます。

 

デザインフラグメントには、デフォルトの値とともにパラメーターを定義することもできます。個々のデザインフラグメントのインスタンスに対して、異なる値をパラメーターへ割り当てることができます。詳細については デザインフラグメントに対するパラメーター を参照ください。

 

デザインを完了した後には、デザインのコンポーネントがデザインツリーでも示されている点に注目してください。

 

テンプレート内にある目的の位置にデザインフラグメントを挿入する

デザインフラグメントを挿入するには、デザインツリーまたはスキーマツリーから目的の場所へデザインフラグメントをドラッグします。デザインフラグメントをドロップする場所は、適切なコンテキストとなるような場所でなければなりません。デザインフラグメントのコンテンツがグローバル要素から作成された場合、メインテンプレート内にある適切なコンテキストがノードの親となるようにデザインフラグメントをドラッグする必要があります。上記の デザインフラグメントのコンテンツを作成するを参照ください。

 

その他にも、デザインフラグメントを挿入する場所を右クリックして、コンテキストメニューからデザインフラグメントの挿入を選択することもできます。

 

メモ:デザインフラグメントがメインテンプレート内部で参照されており、デザインフラグメントの名前が後になって変更された場合、メインテンプレート内部にある参照は正しいものではなくなり、XSLT エラーが返されるようになります。問題を修正するには、メインテンプレート内にあるオリジナルの参照を削除して、名前が変更されたデザインフラグメントへの参照を新たに作成してください。

 

再帰的なデザインフラグメント

デザインフラグメントはそれ自体を呼び出すような、再帰的なかたちで作成することもできます。Authentic View における無限ループを回避するため、呼び出しの階層を制限するプロパティをセットすることができます。SPS のプロパティダイアログ(「ファイル | プロパティ」)にある Authentic タブ内のテンプレート呼出し階層上限プロパティにて値をセットすることができ、この値により、Authentic View 出力を処理する際に再帰的なテンプレート呼び出す回数の最大値が指定されます。テンプレート呼出し階層上限プロパティで指定された値を超えたテンプレートの呼び出しが行われた場合、エラーが返されます。

 

デザインフラグメントの削除

デザインフラグメントを削除するには、デザインツリーにて選択をして、デザインツリーの削除ツールバーアイコン ic_delete をクリックします。

 

モジュール SPS におけるデザインフラグメント

SPS モジュールが別の SPS モジュールへ追加された 場合、追加されたモジュール内にあるデザインフラグメントも、参照元の SPS にて利用することができるようになります。モジュール SPS に関する詳細については、 次のセクションを参照してください: モジュール SPS

 

サンプルファイル

サンプル SPS は、 (マイ) ドキュメントフォルダーにある、 C:\Documents and Settings\<username>\My Documents\Altova\StyleVision2019\StyleVisionExamples\Tutorial\DesignFragments にて確認することができます。

 

 

 


(C) 2019 Altova GmbH