<?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>
<!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>