ホームDSSSL研究室 » DSSSL技術マニュアル » マクロの使用方法

同じ記述を繰り返す際に、一括にまとめて定義して記述をして再利用する場合に用います。

DTD&インスタンスの記述例


<?xml version="1.0" encoding="Shift_Jis"?>
<!DOCTYPE sample [
<!ELEMENT sample (title,p,p1,table)>
<!ELEMENT table (tr*)>
<!ELEMENT tr (th*|td*)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT p (#PCDATA)>
<!ELEMENT p1 (#PCDATA)>
<!ELEMENT th (#PCDATA)>
<!ELEMENT td (#PCDATA)>
]>
<sample>
	<title>タイトルです。</title>
	<p>要素を一つにまとめにしておきます。</p>
	<p1>このようにフォントが変わります。</p1>
	<table>
		<tr>
			<th>テーブルヘッダ</th>
			<th>セルごとに出力が変化します。</th>
		</tr>
		<tr>
			<td>テーブルデータ</td>
			<td>テーブルのセルを作成する際によく使います。</td>
		</tr>
	</table>
</sample>
            



DSSSLスタイルシート記述例


<!DOCTYPE style-sheet PUBLIC "-//James Clark//DTD DSSSL Style Sheet//EN">
<style-sheet>
<style-specification>
<style-specification-body>
;以下にDSSSLを記述してください。


;マクロを作成はdefineで定義して要素を一つにまとめる。

;フォントの指定
(define *font-title*		;「*font-title*」として定義する
	(style  font-size: 20pt
		font-weight: 'bold
		quadding: 'center))
(define *font-type1*		;「*font-type1*」として定義する
	(style  font-size: 16pt
		quadding: 'center))
(define *font-type2*		;「*font-type2*」として定義する
	(style  font-size: 12pt
		font-posture: 'italic
		quadding: 'end))


;テーブルセルのラインを指定

;セルに線を引く
(define *cell-border-true*		;「*cell-border-true*」として定義する
   (style cell-before-row-border: #t
          cell-after-row-border: #t
          cell-before-column-border: #t
          cell-after-column-border: #t))

;セル内のマージン(余白)2mmの指定
(define *cell-margin-2*			;「*cell-margin-2*」として定義する
   (style cell-before-row-margin: 2mm
          cell-after-row-margin: 2mm
          cell-before-column-margin: 2mm
          cell-after-column-margin: 2mm))


(root		;全体を指定
	(make simple-page-sequence	;シンプルなレイアウトを行う
		page-width: 210mm		;用紙サイズの幅「A4」の大きさ
		page-height: 297mm		;用紙サイズの縦「A4」の大きさ
		left-margin: 20mm
		right-margin: 30mm
		top-margin: 30mm		;それぞれのマージン(余白)の指定
		bottom-margin: 30mm
		language: 'JA		;日本語の記述
	)
)

(element title
	(make paragraph
		use: *font-title*	;define定義で「font-title」として定義した要素を用いる
		space-after: 20pt))
(element p
	(make paragraph
		use: *font-type1*	;define定義で「font-type1」として定義した要素を用いる
		space-after: 20pt))
(element p1
	(make paragraph
		use: *font-type2*	;define定義で「font-type2」として定義した要素を用いる
		space-after: 20pt))

;テーブルの全体を指定する。
(element table				;テーブルのタグを指定
	(make table			;テーブルの作成を指定
		display-alignment: 'center	;出力の場所を指定 (左('start:デフォルト),中央('center),右('end))
		table-border: #t		;テーブルの周りに線を引く(線を引く(#t),線を引かない(#f:デフォルト))
		line-thickness: 0.5pt	;線の太さを指定
		(make table-column		;テーブルカラム(縦の領域)の作成を指定
			width: 80mm)	;テーブルカラムの幅を指定
		(make table-column
			width: 100mm)
		(process-children)))	;出力を促す指定

;テーブルのロウ(テーブルの横の領域)を指定する
(element tr
	(make table-row))

;テーブルのセルを指定
(element th
	(make table-cell
;define定義された要素を連続して用いる。「merge-style」を用いると定義した要素を幾つも用いることが可能となる
;「*cell-border-true*」「*cell-margin-2*」「*font-type1*」の3つの定義を用いている。
		use: (merge-style *cell-border-true* *cell-margin-2* *font-type1*)
	)
)
(element td
	(make table-cell
;define定義された要素を連続して用いる。「merge-style」を用いると定義した要素を幾つも用いることが可能となる
;「*cell-border-true*」「*cell-margin-2*」「*font-type2*」の3つの定義を用いている。
		use: (merge-style *cell-border-true* *cell-margin-2* *font-type2*)
	)
)

;以上にDSSSLを記述指定ください。
</style-specification-body>
</style-specification>
</style-sheet>


            

「define」で定義を行い、「use」で定義された要素を用います。「merge-style」を用いると定義した要素を幾つも用いることになります。
この際に「define」の中に定義可能な要素は継承特質と呼ばれる要素のみとなります。

up

出力結果

出力結果