条件の使用

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

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

条件の使用

QuickStart.xml では、各 newsitem 要素内に metainfo 子要素が含まれており、その中に1つ以上の relevance 子要素を含めることができます。各 relevance ノードには、ニュースアイテムの類似性を表す見出しが含まれます。その他にも、 /presswatch/selection/byrelevance というノードがあります。このノードのコンテンツには関連する見出しが含まれており、どのニュースアイテムを表示するか決定することができます。例えば、byrelevance ノードのコンテンツが NanoPower となっている場合、NanoPower というコンテンツを含む relevance ノードを持った全てのニュースアイテムが表示されます。条件により(ノードをルックアップすることで)byrelevance ノードのコンテンツがテストされ、ユーザーの各選択に対して対応する処理や表示を行うことができるようになります。このセクションでは、ユーザーの選択にマッチした relevance 要素が含まれるこれらニュースアイテムを表示するための条件テンプレートを作成します。

 

以下のように操作を行います:

 

1. which byrelevance ノードの値を表示する コンボボックスを作成します。コンボボックスのドロップダウンリストに表示される値は、XPath 条件式により取得され、relevance ノードのユニークな値からなるリストを動的に作成します。
2.newsitem 要素の周りに条件を挿入します。この条件により、byrelevance ノードのコンテンツにマッチした relevance 要素を含む全ての newsitem 要素が選択されます。条件の分岐に囲まれたコンテンツのことを、条件テンプレートと呼びます。
3.条件テンプレート内にて、ニュースアイテムの各 relevance ノードを表示します。
4.byrelevance 要素にマッチした(relevance 要素のリスト内にある)relevance 要素をハイライトします。この操作は、relevance 要素に対する条件を作成し、条件テンプレートに対してフォーマットを適用することで実現できます。
5.newsitem 要素に対する条件内に、全てのニュースアイテムを選択する分岐を挿入します。

 

ユニークなノード値を選択するコンボボックスを作成する

XML ドキュメントでは、ユーザーの選択が /presswatch/selection/byrelevance 内に含まれます。 コンボボックスとしてこのノードを作成します。 手順は、以下のとおりです:

 

1.ドキュメントの先頭にある2番目の 自動計算 の下に "Select by relevance: " という静的テキストを挿入します(以下のスクリーンショットを参照)。

 

TutQS_DesView_ComboBoxLoc

 

2.(以下のスクリーンショットにて示される) スキーマツリー サイドバー から、byrelevance ノードをドラッグし、先ほど新たに入力した静的テキストの後にドロップします。

 

TutQS_SchemaSrc_ByRelevance

 

3.コンテキストメニューが表示されるので、コンボボックスの作成を選択します。以下のダイアログが表示されます。

 

Click to expand/collapse

 

4.コンボボックスの編集ダイアログにて、「XPath 条件式を使用」を選択し、「XML 値ならびに閲覧可能なエントリーに対して同一の XPath を使用」を選択します。XML 値ならびに閲覧可能なエントリーに対する XPath にて、 distinct-values(//relevance) という XPath 条件式を入力します。この条件式により、XML ドキュメント内における全ての relevance 要素のユニークな値が選択されます。 relevanceノードの値は HTML コンボボックスに表示されるものの、HTML プレビューで値の選択を行なっても、XML ドキュメント内のノードコンテンツが影響を受けることは無い点に注意してください。HTML ドキュメントは XML ドキュメントを変換することで得られる出力で、入力を受け取る事はありません。ここでは、コンテンツの表現を行う手段としてコンボボックスを使用しました。
5.「OK」 をクリックして完了します。コンボボックスが挿入され、デザインは以下のように表示されます:

 

TutQS_DesView_ComboBoxByRelevance

 

6.HTML プレビュー へ切り替えます。コンボボックスの矢印をクリックすると、全ての relevance ノードにあるユニークな値がリスト表示されます。XML ドキュメントの内容が合致するか確認してみてください。このリストは動的に生成され、XML ドキュメントに新たに加えられた relevance 値も反映されます。

 

TutQS_AuthView_ComboBoxByRel

 

条件を挿入することで選択された relevance に対するニュースアイテムを表示する

/presswatch/selection/byrelevance 要素内で metainfo/relevance 要素を持った newsitem 要素が選択されます。以下のように条件を挿入します:

 

1.デザインの newsitem におけるコンテンツを選択します(以下のスクリーンショットにおけるハイライト箇所)。

 

TutQS_DesView_Condition_selection

 

2.メニューコマンド(またはコンテキストメニューコマンド)から「 タグで囲む | 条件 」を選択します。これにより XPath 式 の編集ダイアログが表示されます。
3.metainfo/relevance=/presswatch/selection/byrelevance という条件式を入力します。条件式により、現在の newsitemmetainfo/relevance 子孫が、(ユーザーの選択値である)/presswatch/selection/byrelevance に一致する場合に真となります。
4.「OK」 をクリックします。newsitem 要素のコンテンツの周りに条件が作成されます(以下のスクリーンショットを参照)。

 

TutQS_DesView_Condition

 

この段階では条件分岐が1つしかない点に注目してください。条件の結果が真となるニュースアイテムが表示され、条件の結果が真とならないニュースアイテムは表示されません。この場合、条件はフィルターとして機能します。このセクションの後半では、2番目の条件分岐を追加します。

 

relevance ノードをリストとして挿入する

newsitem 要素の relevance ノードを表示するためには、以下の操作によりこれらノードをデザイン内に挿入します(以下のスクリーンショットを参照):

 

1.source 要素の div タグと条件テンプレートの終了との間に改行を作成します。
2."relevance:" という静的テキストを入力し、その回りに定義済みフォーマットの div を作成します。
3.スキーマツリー サイドバー のルート要素ツリーから relevance 要素をドラッグし、relevance: 静的テキストの下にドロップします。
4.リストを作成します(コンテキストメニューが表示されるので、箇条書きの作成を選択し、目的のフォーマットを選択します)。
5.リストのコンテンツに対してテキストのフォーマットを指定します。デザインは以下のようになります:

 

TutQS_DesView_RelevanceList

 

ここで HTML プレビューにて、コンボボックスの選択肢を変更することで relevance の選択結果を確認してください。 以下を行います: (i) XML ドキュメント内の byrelevance ノードの値を変更する。 (ii) XML ドキュメントを保存する。 (iii) StyleVision 内で SPS を開きます。

 

選択された relevance 要素を太字にする

ニュースアイテムによっては、複数の relevance 要素を含むものもあります。そのような場合、ユーザーの選択に合致した relevance をハイライトすることで、デザインを改善することができます。以下の操作によりデザインを拡張します:

 

1.デザイン内の relevance 要素を選択します。
2..=/presswatch/selection/byrelevance という XPath 条件式とともに、条件を挿入します。この操作により、分岐が1つの条件が作成され、byrelevance 要素にマッチする relevance 要素が選択されます(以下のスクリーンショットを参照)。

 

TutQS_DesView_ConditionRel1

 

3.コンテンツプレースホルダを選択し、ローカルのフォーマットとして(フォントグループから)太字を表す bold と、(色グループから)背景色の background-coloryellow を(スタイルサイドバーにて)指定します。
4.条件を右クリックして、コンテキストメニューから条件分岐のコピーを選択します。
5.XPath 式 の編集ダイアログ にて、(ダイアログ右上にある)「それ以外」のチェックボックスをクリックします。
6.「OK」 をクリックして完了します。新たな(その他)の条件分岐が作成されます(以下のスクリーンショットを参照)。この条件分岐では、byrelevance 要素にマッチしない全ての relevance 要素が選択されます。

 

TutQS_DesView_ConditionRelOtherw

 

7.その他の条件分岐にあるコンテンツは、最初の条件分岐からのコピーとなります。コンテンツのプレースホルダには太字で黄色の背景色が与えられます。コンテンツプレースホルダを選択し、これらのフォーマット情報を削除してください。

 

 

これで、relevance 要素に対して以下のような動作を行う2つの条件分岐を持った条件が作成されました: relevance のコンテンツが /presswatch/selection/byrelevance のコンテンツにマッチすれば relevance のコンテンツが太字に黄色の背景色で表示され、それ以外の場合は、(2番目の条件分岐により)通常のフォーマットでコンテンツが表示されます。 HTML プレビューにて動作を確認してください。

 

コンボボックスを修正して、2番目の条件分岐を挿入する

コンボボックス内の、全てのニュースアイテムを選択するオプションが表示されていません。以下の操作により、全てのアイテムを選択するオプションを加えることができます:

 

1.デザインビューにてコンボボックスを選択します。
2.プロパティサイドバーにてコンボボックスが選択された状態で、(コンボボックスグループ内にある)コンボボックス入力値プロパティの編集ボタンをクリックします。
3.コンボボックスの編集 ダイアログにて、XPath 条件式を distinct-values(//relevance) から、distinct-values(//relevance), 'All' へ変更します。この操作により、"All" という文字列が XPath 条件式により返されるアイテムのシーケンスに追加されます。
4.HTML プレビュー にてコンボボックスのドロップダウンリストの選択肢を確認します(以下のスクリーンショットを参照)。(下のスクリーンショット).

 

TutQS_AuthView_ComboBoxByRelAll

 

Allbyrelevance ノードを入力することができます。 byrelevance ノードに "All" という値が含まれる場合、全てのニュースアイテムが表示されるようになります。

 

ニュースアイテムテンプレートを表示する条件には metainfo/relevance=presswatch/selection/byrelevance という分岐だけが与えられています。metainfo/relevance ノードに All という値は無いため、byrelevance ノードにて All という値が選択されても、ニュースアイテムは表示されません。そこで、All という値に対してマッチする2番目の条件分岐を作成する必要があります。条件の結果が真となった場合に、条件分岐にあるテンプレートが表示されます。以下の操作をおこなってください:

 

1.デザインビューにて、ニュースアイテムの条件を選択します。
2.条件を右クリックして、コンテキストメニューから条件分岐のコピーを選択します。
3.XPath 式 の編集ダイアログ/presswatch/selection/byrelevance='All'と入力します。
4.「OK」 をクリックして完了します。2番目の分岐が作成されます。

 

2番目の条件分岐には、最初の分岐と同一のコンテンツが含まれます。   byrelevance ノードのコンテンツが All の場合、2番目の分岐にはニュースアイテムテンプレートの出力を行います。

 

操作が完了した状態でファイルを保存してください。

 

 

 


(C) 2019 Altova GmbH