XMLStyleSheet

  • XMLをXSLで表示するには2つの手順が必要
①XML文書を変換(transformation)
②書式情報を与える(formating)
	→XSLFOとCSSがあるがXSLFOは高度なため普及していない

  • XSLスタイルシート:XML文書をどのように変換するのかという情報(.xsl)

  • XSLスタイルシート全体は整形式XML文書の形をとる


  • XSLスタイルシートのルート要素には「xsl:stylesheet」を使う

  • テンプレートルール:XML文書を変換するためのルール
①XML文書の「どの部分」を		→パターン
②「どのように」変換するのか	→テンプレート

  • スタイルシートの中では「文書」に当てはまるテンプレートルールが一番最初に選択される

  • <xsl:output method="xml" encoding="文字コード"/>
		↓		→結果文書の文字コードを指定
		→結果文書の形式を指定
*結果に付け加えられるXML宣言となる

  • テンプレ-ト内は原則として上から順に処理される

  • <xsl:apply-templates select="文書"/>
	→ここの処理に飛ぶ

  • CSS:レイアウトを指定、テキストエディタで作れる(.css)

                        • CSSの指定-----------------------------
セレクタ{
属性1:値1;  属性1の書式を値1にする
属性2:値2;
}


  • セレクタ:XML文書のどの部分に書式情報を与えるのか

  • CSSの属性(property):セレクタに対してどの部分の書式を与えるか
                              • CSSの属性----------------------------------------
display 基本となる表示形式を指定
margin 余白を指定する
border-color 境界線の色を指定する
border-style 境界線のスタイルを指定する
border-width 境界線の太さを指定する
text-align テキストの位置を指定する
text-indent テキストの字下げを指定する
line-hight 行送りを指定する
font-family 使用するフォントを指定する
font-size 文字のサイズを指定する
font-weight 文字の太さを指定する
color 色を指定する
background-attachement 背景をスクロールするか指定する
background-color 背景の色をしえ治する
background-image 背景の画像を指定する


  • CSSを与える:<?xml-stylesheet type="text/css" href="Sample.css"?>

  • <?と?>で囲まれた指定を処理命令(PI)と呼ぶ

  • CSSを利用したスタイルシートには以下の文章が必要
<xsl:processing-instruction name="xml-stylesheet">
	type"text/css" href="Sample.css"
</xsl:processing-instruction>

XPath
              • ルートノードから指定する(絶対位置指定)-------------
① / ルートノード
② /要素名A ルート要素A
③ /要素名A/要素名B ②の子である要素B
④ //要素名C 文書内のすべての要素C
⑤ /要素名A/要素名B/@属性D ③の属性D


  • カレントノード:現在処理中のノード
              • カレントノードから指定する(相対位置指定)-----------
⑥ . カレントノード
⑦ 要素名E ⑥の子である要素E
⑧ 要素名E/要素名F ⑦の子である要素F
⑨ 要素名E//要素名G ⑦の子の要素G
⑩ 要素名E/@要素名H ⑦の子の属性H


  • <xsl:copy-of select="式"/>
	→式で指定したノード以下をコピーする

  • <xsl:value-of select="式"/>
	→式で指定したノード以下をテキストに変換

  • <xsl:copy> カレントノードだけをコピー

  • 「*」(ワイルドカード)を記述すると、すべての名前を表すことができる

  • XPathの式の最後の部分に[]をつけてノードを絞り込むことができる
<xsl:apply-templates select="cars/car[2]"/>
				→2番目の「car」要素だけ処理する
                  • XPathの演算子-----------------
= イコール
!= ノットイコール
> >
>= >=
< <
<= <=


  • 「xsl:element」要素などを使って、要素を作成できる
<xsl:element name="car">日本車</xsl:element>

  • 属性を追加
<xsl:attribute name="company">カーバンク社</xsl:attribute>

  • テキストを追加
<xsl:text>車のデータです。</xsl:text>

  • 合計を計算
<xsl:value-of select="sum(price)"/>
			→価格の合計を計算

  • データの数を数える
<xsl:value-of select="count(car)"/>
			→ノード数を数える

                • XPathの関数------------------------------------------------------------------------
round(数値) 数値に最も近い整数を返す
floor(数値) 数値に最も近い数値より小さい整数を返す
ceiling(数値) 数値に元も近い数値より大きい数値を返す
sum(式) 式で指定されたノードの集合を数値にして合計値を返す
last() カレントノードの集合の個数を返す
position() カレントノードの集合の中での現在のノード位置を返す
count(式) 式で指定したノードの集合の個数を返す
string-length(文字列) 文字列の長さを返す
substring(文字列1、数値1、数値2) 文字列から、「数値1」の位置より後ろの文字を
				「数値2」個分抜き出して返す
starts-with(文字列1、文字列2) 文字列1が文字列2で始まれば真を返す
contains(文字列1、文字列2) 文字列1が文字列2が含まれれば真を返す
translate(文字列、文字リスト1、文字リスト2)
				文字列の中の文字リスト1を文字リスト2に
				置換したものを返す


  • XPathの式はロケーションステップと呼ばれる単位から成り立っている
		→軸、ノードテスト、述語

                              • 軸:基準となるノードとの関係を示すもの------------------
self:: カレントノード自身
child:: 子
parent:: 親
decendant:: 子孫
ancestor:: 先祖
decendant-or-self:: 子孫とカレントノード自身
ancestor-or-self:: 先祖とカレントノード自身
preceding-sibiling:: 兄
following-sibiling:: 弟
preceding:: カレントノードの前
following:: カレントノードの後
attribute:: 属性
namespace:: 名前空間


                  • ノードテスト:ノードの名前または種類を指定---------------------
node() すべてのノード
comment() コメントノード
text() テキストノード
processing-instruction() 処理命令ノード


述語:ノードの絞込みをする条件。[]でくくって指定する

                  • 簡易表記-------------------------------------------------------
詳細		範囲		意味
child: (指定なし) 子
self::node() . カレントノード
parent::node() .. 親
attribute:: @ 属性
[position()=数値] [数値] ノードの順序


                • XSLの主な要素と属性---------------------------------------------------------------
xsl:comment コメントを作成する
xsl:processing-instruction name="式" 式で指定したターゲット名を持つ処理命令を作成する
xsl:if test="式" 式の条件が成り立つときに処理する
xsl:choose,xsl:when,xsl:otherwise 場合分けして処理する(下に詳細)
xsl:for-each select="式" 式で指定された複数のノードを繰り返して処理する
xsl:sort select="式" 式を手がかりにソートをする
xsl:number 番号を振る
xsl:variable name="式" 式で指定した名前の変数を定義する

xsl:when →要素の条件が成り立つ場合(if)
xsl:otherwise →whenの条件が成り立たない場合(else)

              • xsl:sort要素の属性----------------------------------
select="XPathの式" 式の値で並べ替える
data-type="number" 数値として並べ替える
 ="text"		テキストとして並べ替える
order="ascending" 昇順
    ="descending"		降順
(無指定だとascending)


                  • xsl:number要素の主な属性--------------------------------------------------
label="single" 章番号のように番号を振る
    ="multiple"	「章、節、項」のように番号を振る(上のレベルの番号もつける)
    ="any"		登場順に番号を振る
(省略した時はsingle)

count="XPathの式" カウントするノードを指定する
(省略した時はカレントノードと同じパターン)

from="XPathの式" カウントを始めるノードを指定する

format="番号の形式"
  1		1,2,3
    A		A,B,C
    ア		ア、イ、ウ

value="XPathの式" 独自の数値とする


<xsl:variable name="名前"/>
・・・
</xsl:variable>
・・・
<xsl:copy-of select="$名前"/> 上の"名前"の中身をさす
<xsl:value-of select="$名前"/>
最終更新:2008年10月03日 16:04
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。