<xsl:copy>  
結果ツリーの要素の浅いコピーを作成します。この要素は、現在のノードとその名前空間ノードのみをコピーします。現在のノードの子とその属性はコピーされません。
 
カテゴリ

命令

 
必須の属性

なし。

 
省略可能な属性
use-attribute-sets
この要素で使用する属性セットを示します。複数の属性セットを指定する場合は、空白スペース文字を使用して名前を区切ります。詳細については、 < xsl:attribute-set > 要素の説明を参照してください。

 
コンテンツ

XSLT テンプレート。

 
指定先

<xsl:copy> はテンプレート内に指定します。

 
定義先

XSLT 7.5 節「Copying」

 

結果ツリーに要素をコピーする例を使用して、<xsl:copy> について示します。ソースドキュメントの属性ノードを処理することを明示的に要求していないので、結果ツリーに属性は含まれません。スタイルシートは次のとおりです。

<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:output method="xml"/>

  <xsl:template match="*">
    <xsl:copy>
      <xsl:apply-templates/>

    </xsl:copy>
  </xsl:template>

</xsl:stylesheet>

次の XML ドキュメントに対してスタイルシートをテストします。

<?xml version="1.0"?>
<report>
  <title>Miles Flown in 2001</title>
  <month sequence="01">
    <miles-flown>12379</miles-flown>
    <miles-earned>35215</miles-earned>
  </month>
  <month sequence="02">
    <miles-flown>32857</miles-flown>
    <miles-earned>92731</miles-earned>
  </month>
  <month sequence="03">
    <miles-flown>19920</miles-flown>
    <miles-earned>76725</miles-earned>
  </month>
  <month sequence="04">
    <miles-flown>18903</miles-flown>
    <miles-earned>31781</miles-earned>
  </month>
</report>

結果は次のとおりです。

<?xml version="1.0" encoding="UTF-8"?>
<report>
  <title>Miles Flown in 2001</title>
  <month>
    <miles-flown>12379</miles-flown>
    <miles-earned>35215</miles-earned>
  </month>
  <month>
    <miles-flown>32857</miles-flown>
    <miles-earned>92731</miles-earned>
  </month>
  <month>
    <miles-flown>19920</miles-flown>
    <miles-earned>76725</miles-earned>
  </month>
  <month>
    <miles-flown>18903</miles-flown>
    <miles-earned>31781</miles-earned>
  </month>
</report>

<xsl:copy> は浅いコピーを作成します。これにより、<xsl:copy-of> 要素よりも出力を細かく制御できます。ただし、結果ツリーにコピーする子ノードまたは属性ノードを明示的に指定する必要があります。<xsl:apply-templates> 要素は、現在の要素のすべてのテキスト、要素、コメント、および処理命令の子を選択します。この要素がないと、結果ツリーには 1 つの空の <report> 要素のみが含まれます。この方法を <xsl:copy-of> 要素の例と比較してください。