xslt:copy

xslt:copy 要素 (XSLT)

[1] xslt:copy 要素を使うと、 現在節をそのまま結果木に複製できます。 <http://www.w3.org/TR/xslt#element-copy>

但し、子節属性節は複製されません。 ですから、要素節ではタグに当たる部分 (属性指定並びを除く。) だけが複製されます。

[3] 属性:

use-attribute-setsqnames(なし)追加の属性集合

use-attribute-sets は、 要素節が複製される場合のみ使われます。

[4] この要素は、雛形中の禁止されていない適当な場所で使うことが出来ます。

[5] この要素の内容は、複製された節の内容となる雛形です。 ただし、属性節や子節を持つことが出来る種類の節、 すなわち根節要素節が複製される場合にのみ実現値化されます。 その他の場合は意味を持ちません。 書いちゃ駄目とはかかれていないので、誤りではありません。

[6] 複製されるのが根節であるときには、 本来結果木の根節は暗黙のうちに生成されるものですから、 特に何も起こりません。内容が実現値化されるだけです。 他の節の子節の雛形に根節を複製せよとあったらどうなるかには触れられていませんが、仕様書を素直に解釈すれば、単に内容が実現値化されるだけで誤りではありません。もっとも、こんなことしても何の意味もないでしょうけどね。

[7] 複製されるのが属性節であるときには、 xslt:attribute 要素で同様のことをしようとしたら誤りとなることは、 やはり誤りとなります。

[2] 注意: 便宜上、或いはスタイル・シート中の雛形の表現上、 属性節や注釈節処理指令節の子節として文節が来ることがありますが、 基本的には XPath/XSLT (or XML情報集合) のモデルではこれはなくて、 それぞれの節の値でしかありません。 ですから、属性節などを複製すると、要素節とは違って値まで複製されます。

例:

<element attr="attr">
 text
 <child/>
</element>

について、

<xsl:template select="element">
  <xsl:copy/>
</xsl:template>

では

<element/>

になりますが、

<xsl:template>
  <el>
    <!-- この for-each は、単に @attr を選択する
         ためだけのもの。 -->
    <xsl:for-each select="@attr">
      <xsl:copy/>
    </xsl:for-each>
  </el>
</xsl:template>

では

<el attr="attr"/>

となります。

[8] >>1 名前空間節は複製されます。