トップページ > コンテンツ > コンピュータ関連その他 > XML基本

そこまで深く試していない。
備忘録程度。

■XML

xmlはデータを構造化して表現できる。

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="処理させる.xsl"?>
<任意のデータ構造定義タグA>
   <任意のデータ構造定義タグB>
   </任意のデータ構造定義タグB>
</任意のデータ構造定義タグA>

■XSLT

xsltはxmlのデータをレイアウトしたりするためのスタイルシートの役目を担う。xsltプロセッサがxmlをxsltのスタイルに従って変換する。
xsltプロセッサの例としては、
XALServletやMSXML6.0、xsltproc等がある。

XSLTの書き方

ここでデータの変換ルールに相当するxlstの書き方を中心に述べる。
ここでは良く使いそうな代表的な物のみピックアップ。
全一覧を見るのであれば、W3Cの規定を見よう。

0.おまじない系
xslt表記 説明
<?xml version='1.0'?> XMLの宣言
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> W3Cの変換ルールを使いますよという宣言

1.template指定系
xslt表記 説明
<xsl:template match="XPathでノード指定"></xsl:template> 特定の型を変換させる元となるテンプレート内容を記述する。
<xsl:apply-templates select="XPathでノード指定" /> 数あるテンプレートから条件に指定したテンプレートを呼び出す。
modeをつけると、複数テンプレートからどのmodeのテンプレートを呼び出すが指定できる。
<xsl:call-template name="テンプレート名" /> <xsl:template name="テンプレート名"></xsl:template>のテンプレートを直接呼び出す。
<xsl:apply-templates select="." mode="別テンプレートのモード"/>と似た意味合い。
<xsl:with-param name="param1" select="引数に渡す値" /> 以下のようにすることで、引数を受け渡すことが出来る。

<xsl:call-template name="関数名func">
<xsl:with-param name="param1" select="引数に渡す値"/>
</xsl:call-template>

<xsl:template name="関数名func">
<xsl:param name="param1"/>
<xsl:param name="param2"/>
</xsl:template>
<xsl:variable name="var" select="value1" /> 変数値

2.要素生成系
xslt表記 説明
<xsl:element name="要素名(例:body)"></xsl:element> 指定した要素のノードに変換される
<xsl:attribute name="属性値"></xsl:attribute> タグに属性値を追加できる。
<xsl:comment></xsl:comment> コメントノードに変換される。<!-- -->
<xsl:text></xsl:text> テキストノードに変換される。本タグで囲わなくてもテキストは表示されるが、空白や改行等を処理する際に役立つ

3.条件分岐系
xslt表記 説明
<xsl:for-each select="XPathでノード指定"></xsl:for-each> 指定したノードについて繰り返し処理を行わせる。xsl:sort等と組み合わせて使用するのが一般的。
<xsl:sort select="ソートキーとなる式" /> selectで指定した条件でソートする。
<xsl:number /> 数字を表示する。
<xsl:if test="条件式"></xsl:if> いわゆるif文
<xsl:choose>
 <xsl:when test="条件式">
 </xsl:when>
 <xsl:otherwise>
 </xsl:otherwise>
</xsl:choose>
いわゆるswitch-case文。
chooseがswitch,whenがcase,otherwiseがdefaultのイメージで、whenに条件式、otherwiseはどの条件にもヒットしなかった場合の記述を書く。
<xsl:analyze-string select="XPathでノード指定" regex="正規表現">
 <xsl:matching-substring>
 </xsl:matching-substring>
 <xsl:non-matching-substring>
 </xsl:non-matching-substring>
</xsl:analyze-string>
正規表現でマッチした場合とそうでない場合の分岐

※ifやwhenで指定する条件式についてはこちら参照。

※演算子の種類はこちら参照。

※使用できるXSLT関連の関数についてはhttp://www.atmarkit.co.jp/fxml/tanpatsu/xslt/xslt09.html参照

4.値取得系
xslt表記 説明
<xsl:value-of select="XPathでノード指定" /> 指定されたノードで囲まれた値を取得する
<xsl:copy-of select="XPathでノード指定" /> 指定されたノード以下、サブツリー全体をコピーする

5.組み込み関数系
こちら参照。

6.その他
xslt表記 説明
<xsl:output /> データ変換の出力形式を指定する
<xsl:function></xsl:function> 関数定義
<!-- --> 囲った部分をコメントにできる。

最終更新:2018年08月09日 21:47