グローバルテンプレートとその他のコンテンツの使用

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

ホーム >  クイックスタートチュートリアル >

グローバルテンプレートとその他のコンテンツの使用

グローバルテンプレート を使用することで、グローバルな要素の処理を指定することができます。この機能により、(1つの場所で定義された)グローバルテンプレートを、スタイルシート内の複数の場所で使用することができるようになります。グローバルテンプレートは2種類の方法で使用することができます:

 

グローバルテンプレートのルールをローカルテンプレートへコピー。
(メインテンプレート内にある)ローカルテンプレートから、ローカルにあるノードの処理をグローバルテンプレートへ渡すことができます。グローバルテンプレートが実行されると、メインテンプレートにて処理が再開されます。この場合、グローバルテンプレートが、メインテンプレートから呼び出された、または使用されたことになります。

 

メインテンプレートからグローバルテンプレートを呼び出すには、2つのメカニズムがあります:

 

ローカルテンプレートからグローバルテンプレートへの参照。
メインテンプレート内にあるその他のコンテンツ (rest-of-contents) 処理命令を、現在の要素の子孫要素(つまり現在の要素から見たその他のコンテンツ)へ適用。子孫要素に対応したグローバルテンプレートが存在する場合、その要素に対してグローバルテンプレートが適用されます。そうでない場合、内蔵のテンプレートがその要素に対して適用されます。要素に対する内蔵のテンプレートにより子要素が処理され、要素のテキストコンテンツが出力されます。結果として、子孫要素にある全てのテキストコンテンツが出力されます。要素の属性は出力されないという点に注意してください。

 

このセクションでは、その他のコンテンツ処理命令と グローバル要素member に対するグローバルテンプレートを使用します。

 

rest-of-contents (その他のコンテンツ)処理命令を挿入する

スキーマの大まかな構造を以下のスクリーンショットに示します。

 

TutQS_SchemaSrc_ROC

 

ドキュメント要素の presswatch には、(i) selection、(ii) newsitems、(iii) team という3つの子要素が含まれています。これまで作成したメインテンプレートでは /presswatch 要素が処理されます。presswatch 要素内では newsitems 要素だけが処理されます。selection ならびに team 要素は(selectionnewsitems 要素内部で処理されているものの)presswatch 要素内部で処理されません。presswatch へその他のコンテンツ処理命令を挿入することで、selection ならびに team 要素が処理されるようになります。

 

newsitemspresswatch の終了タグ間にカーソルを配置し、メニューコマンドまたはコンテキストメニューから 挿入 | その他のコンテンツ を選択することで、デザインへその他のコンテンツ処理命令が挿入されます。その他のコンテンツプレースホルダが挿入されます(以下のスクリーンショットを参照)。

 

TutQS_DesView_ROC

 

HTML プレビューを確認すると、テキストの文字列が表示されているはずです(以下のスクリーンショットを参照):

 

TutQS_HTML_ROCzero

 

内蔵のテンプレートを selection ならびに team 要素へ適用した結果、この文字列が表示されます。要素に対応した内蔵のテンプレートが子要素の処理を行います。テキストノードに対する内蔵のテンプレートにより、テキストノード内にてテキストが出力されます。これら2つの内蔵テンプレートを組み合わせることで、selection ならびに team 要素以下にある全ての子孫ノードのテキストコンテンツが出力されます。selection/byrelevance から得られた All というテキストが表示され、team/member 子孫ノードの firstlastemail 内にあるテキストが、ドキュメント内の順序により出力されます。memberid 属性は出力されていないことに注目してください(属性は member の子とは見なされません)。

 

selection に対してグローバルテンプレートを作成する

selection のコンテンツを出力に含める必要は無いため、selection に対して空のグローバルテンプレートを作成し、そのコンテンツが処理されないようにします。以下の操作を行なってください:

 

1.デザインビューが表示されている状態で、 スキーマツリー サイドバー内にある全てのグローバル要素の selection を右クリックします。
2.コンテキストメニューから、グローバルテンプレートの作成/削除を選択します。selection に対するグローバルテンプレートが作成されます(以下のスクリーンショットを参照)。

 

TutQS_DesView_GTempty

 

3.グローバルテンプレートにてコンテンツプレースホルダをクリックし、キーボードの Delete キーを押下します。コンテンツプレースホルダが削除されます。
4.HTML プレビューをチェックします。All というテキストが出力されたテキストに表示されなくなります(以下のスクリーンショットを参照)。

 

TutQS_HTML_ROCempty

 

selection のグローバルテンプレートが空になっているため、selection の子要素が処理されなくなります。

 

team/member に対してグローバルテンプレートを作成する

ここでメンバーの詳細情報を表示するテーブルを作成します。team 要素に対するグローバルテンプレート内にテーブルを作成します。以下の操作を行なってください:

 

 

1.team 要素に対するグローバルテンプレートを作成します(スキーマツリーサイドバーにある全てのグローバル要素にて team を右クリックし、グローバルテンプレートの作成/削除を選択します)。
2.全てのグローバル要素リストにて、team 要素を展開して、member 子要素を(デザイン内の)team グローバルテンプレートへドラッグします。
3.team のグローバルテンプレートへドロップした際にコンテキストメニューが表示されるので、テーブルの作成を選択します。動的テーブルの作成ダイアログが表示されます(以下のスクリーンショットを参照)。

 

TutQS_DesView_GTCreateTable

 

4.属性/要素のリストにて、@iddepartmenttelephone の選択を外し、「OK」 をクリックします。動的テーブルが作成されます。
5.カーソルをテーブルボディーのセルに配置して、 プロパティ サイドバーのテーブルが選択されている状態で、以下のスクリーンショットに示されているようにテーブルのプロパティを変更します。

 

TutQS_Properties_Table

 

6.その他の値を、プロパティならびにスタイルサイドバーにて指定します。例えば、ヘッダー行へカーソルを配置した状態で、スタイルの trow を選択し、bgcolor プロパティの値を指定します。静的テキストの文字列であるヘッダーを編集することもできます。team 要素のコンテンツプレースホルダが表示されている場合、コンテンツ部分を削除してください。

 

HTML プレビューでは、テーブルが以下のように表示されます:

 

TutQS_HTML_Table

 

 

 


(C) 2019 Altova GmbH