ホームDSSSL研究室 » DSSSL技術マニュアル » 属性名・値ごとの出力

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

<?xml version="1.0" encoding="Shift_Jis"?>
<!DOCTYPE sample [
<!ELEMENT sample (title,p+)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT p (#PCDATA)>
<!ATTLIST p color CDATA #IMPLIED>
]>
<sample>
	<title>属性値によってフォント色の出力を変えます。タグ名は同じです。</title>
	<p color="blue">青に出力</p>
	<p color="green">緑に出力</p>
	<p color="yellow">黄に出力</p>
	<p color="purple">パープルに出力</p>
	<p color="skyblue">スカイブルーに出力</p>
	<p color="gray">灰色に出力</p>
	<p color="orange">オレンジに出力</p>
	<p color="test">その他は赤に出力</p>
	<p>属性値が無い場合も赤で出力</p>
</sample>
          



DSSSLスタイルシート記述例

<!DOCTYPE style-sheet PUBLIC "-//James Clark//DTD DSSSL Style Sheet//EN"[]>
<style-sheet>
<style-specification>
<style-specification-body>
;スタイル指定のスクリプトは以下に記述してください

;色を指定する形態の記述
(define *rgb-color-space*
        (color-space "ISO/IEC 10179:1996//Color-Space Family::Device RGB"))
(define (rgb-color R G B)
        (color *rgb-color-space* (/ R 255) (/ G 255) (/ B 255)))

;出力する色を指定
(define *red*   (rgb-color 255    0    0 ))
(define *blue*  (rgb-color   0    0  255 ))
(define *green* (rgb-color   0  255    0 ))
(define *yellow*        (rgb-color 255  255    0 ))
(define *purple*        (rgb-color 255    0  255 ))
(define *sky-blue*      (rgb-color   0  255  255 ))
(define *gray*  (rgb-color 128  128  128 ))
(define *orange*        (rgb-color 255  160   60 ))
(define *black* (rgb-color   0    0    0 ))


(root
	(make simple-page-sequence
		page-height: 297mm
		page-width: 210mm
		left-margin: 2cm
		right-margin: 2cm
		top-margin: 3cm
		bottom-margin: 3cm
		language: 'JA))

(element title
	(make paragraph
		font-size: 16pt
		space-after: 20pt))


;タグ「p」の記述形式「属性値によって出力形態を変える」
(element p
	(let (( type (attribute-string "color" )))	;属性名「color」の属性値を取得して変数「type」に入力
	(make paragraph
		font-size: 16pt
		space-after: 20pt
		color: (case type			;変数名「type」の値(上で取得した値)を、以下の状況に分けて出力を行う
			(("blue") *blue*)		;青色
			(("green") *green*)		;緑色
			(("yellow") *yellow*)		;黄色
			(("purple") *purple*)		;パープル
			(("skyblue") *sky-blue*)	;スカイブルー
			(("gray") *gray*)		;灰色
			(("orange") *orange*)		;オレンジ色
			(else *red*)))))		;その他の出力形式(この場合は赤色に出力)


</style-specification-body>
</style-specification>
</style-sheet>
          

up

出力結果

出力結果