サンプル: group-by(Persons.sps)

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

ホーム >  SPS ファイル: 高度な機能 > グループ化 >

サンプル: group-by(Persons.sps)

Persons.sps サンプルは Persons.xsd スキーマをベースに作成されており Persons.xml を作業用 XML ファイルとして使用します。ファイルは (マイ) ドキュメントフォルダー以下にある C:\Documents and Settings\<username>\My Documents\Altova\StyleVision2019\StyleVisionExamples\Tutorial\Grouping\Persons\に格納されています。ドキュメント要素の employees 要素には、任意の数の person 要素を含めることができ、各 person 要素は、以下に示されるような構造を持ちます:

 

<person first="Vernon" last="Callaby" department="Administration" grade="C"/>

 

デザインでは department (部門)によるグループ化を行います。各部門は独立したテーブルにより表示され、部門はアルファベット順にて並べ替えられます。各部門テーブル内部では、person により表される従業員が与えられた権限 (grade) に応じてグループ化が行われ、各 grade では従業員 (person) が苗字 (last) により並べ替えられて表示されます。

 

グループの作成の手順

グループを作成するための手順は以下のようになります。まずは grouping-keydepartment 属性に対して使用することで person 要素に対してグループを作成します。この操作により department 属性の値による person 要素のグループ化が行われます。並べ替えが指定された場合、department によるグループをアルファベット順に並べ替えることができます(例えば Administration が最初に表示され、次に Board of Directors が表示されます)。部門ごとに独立したテーブルを作成するため、(department grouping-key をベースにした)現在のグループはテーブルとして作成されます。グループ化された person 要素内部にて、各グループが grade 属性により更にグループ化されるように指定します。

 

SPS の作成

以下の操作によりデザインを作成します:

 

1.スキーマツリーから person 要素をドラッグし、コンテンツとして作成します。
2.person 要素のタグを右クリックして、コンテキストメニューからグループ化を選択します。
3.出力グループを定義ダイアログにて、group-by を選択し、マッチテキストボックスにて @department という XPath 条件式を入力し、はいをクリックします。
4.グループの並べ替えを行うかを尋ねるダイアログが表示されます。この例ではデフォルトのアルファベット順による並び替えを行うので、はいをクリックします(並べ替えはいつでも設定または削除することができます)。
5.各グループ(この例では department)を独立したテーブル内に作成するため、カレントグループをテーブルとして作成します。以下のスクリーンショットに示されるように current-group() タグを右クリックして、「変更 | テーブル」を選択し、子属性の @last@grade をテーブルのカラムとして選択します。

 

GroupingEx1a

 

6.最初のカラムに @grade が、2番目のカラムに @first@last ノードが含まれるようにテーブルにあるカラムとセルのコンテンツを修正します(以下のスクリーンショットを参照)。
7.department によりグループ化されたカレントグループにて grade によるグループ化を行うため、current-group() テンプレート上にて grade 属性に対するグループを作成します。デフォルトの並べ替えにより作成の確定を行います。current-group() テンプレートが新たに作成されます(以下のスクリーンショットを参照)。
8.grade により並べ替えられた person のサブグループとなるカレントグループを、last 属性に対して並べ替えます。

 

GroupingEx1b

 

9.テーブルのフォーマットをセットします。
10.テーブルの上にテーブルのヘッダーを作成します。個々のテーブルにより部門 (department) が表示されるため、XPath により記述された自動計算をカレントコンテキストで使用することで、部門の名前を動的に取得することができます。XPath 2.0/3.0 current-grouping-key() 関数を使用することができます。
11.同様の処理を最初から行い、別の出力を作成します。今度は grade により person のグループ化を行い、その中で department によりグループ化を行います。

 

テンプレートのグループ化や並べ替えを確認ならびに修正するには、そのテンプレートを右クリックして、コンテキストメニューからグループ化または並べ替えを選択します。この操作により対応するダイアログが表示され、設定を確認または修正することができます。

 

 

 


(C) 2019 Altova GmbH