目次へ

3.5 テキストの生成

<xsl:text
  disable-output-escaping = "yes" | "no">
  <!-- Content: #PCDATA -->
</xsl:text>

xsl:text 要素は、テンプレート内で使用され、結果ツリー内にテキストノードを生成します。出力されるのは、単なるテキストであり要素ではありません。disable-output-escaping は任意属性であり、属性値として yes もしくは no を指定します。yes を指定すると、通常は < や &#x3C; といった文字参照やエンティティ参照によって置き換えられる < や & などの文字がリテラルとして出力されます。

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

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp