- 3.1 xsl:namespace-alias を用いた名前空間 URI の置換
- 3.2 xsl:element を用いた要素の生成
- 3.3 xsl:attribute を用いた属性の生成
- 3.4 名前付き属性の集合
- 3.5 テキストの生成
- 3.6 処理命令の生成
- 3.7 コメントの生成
- 3.8 コピー
- 3.9 属性値テンプレート
- 3.10 ナンバリング
3.5 テキストの生成
<xsl:text disable-output-escaping = "yes" | "no"> <!-- Content: #PCDATA --> </xsl:text>
xsl:text 要素は、テンプレート内で使用され、結果ツリー内にテキストノードを生成します。出力されるのは、単なるテキストであり要素ではありません。disable-output-escaping は任意属性であり、属性値として yes もしくは no を指定します。yes を指定すると、通常は < や < といった文字参照やエンティティ参照によって置き換えられる < や & などの文字がリテラルとして出力されます。
<xsl:template match="/"> <root> <no><xsl:text>001</xsl:text></no> <info><xsl:value-of select="root_before/info_before" /></info> </root> </xsl:template>
上記のテンプレートを info.xml に適用すると以下の結果を得られます。
<?xml version="1.0" encoding="UTF-8"?> <root><no>001</no><info>information</info></root>
3.6 処理命令の生成
<xsl:processing-instruction name = { ncname }> <!-- Content: template --> </xsl:processing-instruction>
xsl:processing-instruction 要素は、結果ツリーに処理命令ノードを生成します。name は必須属性であり、処理命令ノードの名前を指定します。
xsl:processing-instruction 要素は、処理命令のデータを生成するためのテンプレートを含みます。テンプレートは処理された結果が 2文字の文字列 "?>" を含まないテキストであるなら XSLT の要素を含んでいてもかまいません。ただし、XML 宣言は処理命令ではないので、xsl:processing-instruction 要素では出力できません。
以下に例を示します。
<xsl:processing-instruction name="xml-stylesheet"> href="book.css" type="text/css" </xsl:processing-instruction>
上記の記述は、以下の処理命令を生成します。
<?xml-stylesheet href="book.css" type="text/css"?>
3.7 コメントの生成
<xsl:comment> <!-- Content: template --> </xsl:comment>
xsl:comment 要素は結果ツリーにコメントノードを生成します。xsl:comment 要素は、結果ツリーに生成されるコメントのテキストを形成するためのテンプレートを含みます。このテンプレートを処理した結果は 2つの連続するハイフン "--" を含まないテキストノードだけでなければいけません。
以下に例を示します。
<xsl:comment> This file is automatically generated. Do not edit! </xsl:comment>
上記の記述は、以下のコメントを生成します。
<!--This file is automatically generated. Do not edit!-->
3.8 コピー
<xsl:copy use-attribute-sets = qnames> <!-- Content: template --> </xsl:copy>
xsl:copy 要素を使用すると、カレントノードを容易にコピーできます。xsl:copy 要素が処理されると、カレントノードのコピーが生成されます。カレントノードの名前空間ノードも自動的にコピーされますが、ノードの属性と子は自動的にコピーされません。
カレントノードが属性または子を持つことができるノード型 (つまり、ルートノードと要素ノード) の場合、xsl:copy 要素は結果ツリーに生成される要素の内容を指定するテンプレートを含むことができます。
<xsl:template match="*"> <xsl:copy> <xsl:apply-templates /> </xsl:copy> </xsl:template>
上記のテンプレートを info.xml に適用すると以下の結果を得られます。
<root_before> <pic_before>pic.jpg</pic_before> <info_before>information</info_before> </root_before>