コンテキスト・コマンドを使用した命令の配置の制御
Publisher構文は、XSL命令を単純化したものです。この構文は、テンプレートで使用するネイティブのXSLコマンドとともに、実行時にXSL-FOに変換されます。変換後のスタイル・シート内でのこれらの命令の配置によって、テンプレートの動作が決定されます。
PublisherのRTFプロセッサでは、最も一般的なコンテキストに従って、XSL-FOスタイルシート内にこれらの命令が配置されます。ただし、特定の動作の生成には、別の方法による命令のコンテキストの定義が必要な場合もあります。この要件をサポートするために、Publisherには、処理命令のコンテキスト(配置)を定義できる一連のコンテキスト・コマンドが用意されています。たとえば、コンテキスト・コマンドを使用すると、次の処理を実行できます。
-
表に
if
文を指定して、セル、行、列または表全体を参照できます。 -
for-eachループを指定して、(新規ヘッダーとフッターの作成、およびページ番号付けの再開始のため)現行データまたはセクション全体のいずれかを繰り返すことができます。
-
現在のループまたは文書の先頭に変数を定義できます。
コンテキストは、Publisher構文を使用した処理コマンドと、ネイティブXSLを使用した処理コマンドの両方に指定できます。
-
簡略化されたPublisher構文を使用した処理コマンドに対してコンテキストを指定するには、@contextを構文命令に追加します。次に例を示します。
-
<?for-each@section:INVOICE?>
: グループINVOICEの出現ごとに新規セクションを開始することを指定します。sectionコンテキストを追加すると、ヘッダーとフッターおよびページ番号をリセットできます。ページ番号付けを再開しない場合は、@sectionコマンドの後に
<?initial-page-number:'auto'?>
コマンドを追加して複数のセクション間でページ番号付けを継続します。 -
<?if@column:VAT?>
:if
文をVAT列にのみ適用することを指定します。
-
-
XSLコマンドにコンテキストを指定するには、タグにxdofo:ctx="context"属性を追加して、命令の挿入のコンテキストを指定します。コンテキストの値によって、コードが配置される場所が決まります。
次に例を示します。
<xsl:for-each xdofo:ctx="section" select ="INVOICE">
<xsl:attribute xdofo:ctx="inblock" name="background-color">red</xsl:attribute>
Publisherでは、次の表に示されているコンテキスト・タイプがサポートされています。
コンテキスト | 説明 |
---|---|
section |
文は、ヘッダーおよびフッターを含めてセクション全体に影響を与えます。たとえば、for-each@sectionコンテキスト・コマンドでは、出現箇所ごとに、再開始されたページ番号およびヘッダーとフッターを使用して新規セクションが作成されます。 |
column |
この文は、表の列全体に作用します。このコンテキストは通常、データに応じて表の列を表示または非表示にするために使用されます。例については、列の書式設定を参照してください。 |
cell |
この文は、表のセルに作用します。このコンテキストは通常、動的な列数を作成するために、ピボット・テーブルで@columnとともに使用されます。例については、ピボット・テーブルの挿入を参照してください。 |
block |
この文は、複数のfo:blocks(RTFの段落)全体に作用します。このコンテキストは通常、i |
inline |
このコンテキストは、fo:inlineブロック内の単一の文になります。このコンテキストは変数に使用されます。 |
incontext |
文は、その文を囲んでいる文の直後に挿入されます。これは、その文を囲んでいるfor-eachの後の最初の要素として続く必要がある |
inblock |
文は、fo:block(RTFの段落)内の単一の文になります。これは通常、制御文( |
inlines |
この文は、複数のインライン・セクション全体に作用します。1つのインライン・セクションは、太字でレンダリングされる一続きの語など、同じ書式設定を使用するテキストです。ボイラープレート・テキストでのIf文の使用を参照してください。
|
begin |
この文は、XSLスタイルシートの先頭に配置されます。これは、グローバル変数の場合は必須です。パラメータの設定を参照してください。 |
end |
この文は、XSLスタイルシートの最後に配置されます。 |
次の表に、各Publisherコマンドに対するデフォルト・コンテキストを示します。
コマンド | コンテキスト |
---|---|
apply-template |
inline |
attribute |
inline |
call-template |
inblock |
choose |
block |
for-each |
block |
if |
block |
import |
begin |
param |
begin |
sort |
incontext |
template |
end |
value-of |
inline |
variable |
end |