XML > XSLT > 構造
XSLT の構造
XSLT による XML 文章の変換ルールを記述したものを XSLT スタイルシートといい、
構造は以下のようになっている。
XML 宣言 | ||
スタイルシート宣言 | ||
テンプレート・ルール | ||
XSLT 命令 | ||
また、XSLT スタイルシートは XML の仕様に従って記述する(整形式)
XSLT スタイルシートを記述したものを XSLT 文章という。
例
<?xml version="1.0" encoding="shift_jis"?> | ||
<xsl:stylesheet version="1.0"> | ||
<xsl:template match="/"> | ||
<font> <xsl:value-of select="." /> </font> |
||
</xsl:template> | ||
</xsl:stylesheet> |
XML 宣言
XSLT スタイルシート自体が XML で記述されるため、XML 宣言を行う必要がある。
書式は XML 文章と同じだが、XML ファイルと同じエンコードの必要がある。
(書式) <?xml version="バージョン" encoding="エンコード方式" standalone={"yes" | "no"}?> (例) <?xml version="1.0" encoding="Shift_JIS" ?> |
スタイルシート宣言
(書式) <xsl:stylesheet version="バージョン" xmlns:xsl="XLST名前空間 URI" xmlns="名前空間 URI" exclude-result-prefixes="指定"> </xsl:stylesheet> (注意) xsl:stylesheet は xsl:transform でも良い |
属性 | 内容 |
---|---|
version | XSLT のバージョン |
xmlns:xsl | XSLT の名前空間(http://www.w3.org/1999/XSL/Transform) |
xmlns | 名前空間接頭辞省略時のデフォルト名前空間(省略可能) |
exclude-result-prefixes | 変換後の結果ツリーに含めない名前空間を指定 複数指定する場合は半角スペースで区切る "#default"を指定すると xmlns で設定した名前空間を 変換後の結果ツリーに含めない (省略可能) |
(例) <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml"> または <xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml"> |
テンプレート・ルール
テンプレートとパターンで構成され、パターンにマッチするノードに対して
テンプレート・ルールがインスタンス化される。
XSLT 命令
テンプレートのパターンにマッチする部分の変換内容(処理内容)を記述する。
XML 側での XLST の使用
作成した XSLT のファイルと XML 文章を関連付けるには、XML 文章の XML 宣言の
直後に以下の書式で処理命令を記述する。
(書式) <?xml-stylesheet href="スタイルシートファイルの URI" type="スタイルシートの記述言語" title="タイトル" media="の出力媒体" charset="文字コード" alternate={"yes" | "no"} ?> |
属性 | 概要 |
---|---|
href | スタイルシートファイルの URI |
type |
スタイルシートの記述言語 CSS スタイルシートを適用する場合は "text/css" XSLT のスタイルシートを適用する場合は "text/xsl" |
title | 適用スタイルシートを表すタイトル 省略可 |
media | XML 文章の出力媒体 省略可 |
charset | スタイルシートの記述文字コード 省略可 |
alternate | 複数スタイルシートを使用する場合は "yes" 省略可(省略時は "no") |
(例) <?xml version="1.0" encoding="Shift_JIS"?> <?xml-stylesheet href="test.xsl" type="text/xsl"?> <社員名簿> <社員> <氏名>山田太郎</氏名> <所属>管理部</所属> </社員> <社員> <氏名>鈴木花子</氏名> <所属>営業部</所属> </社員> </社員名簿> |