<xsl:copy-of> 要素
サブツリーおよび結果ツリー フラグメントを結果ツリーに挿入します。
<xsl:copy-of
select = Expression />
属性
- select
必ず指定します。 コピーするノードを識別する XPath 式 (XSLT)。 これらのノードの下のサブツリー全体が結果ツリーにコピーされます。
要素情報
出現回数 |
無制限 |
親要素 |
xsl:attribute、xsl:comment、xsl:copy、xsl:element、xsl:fallback、xsl:for-each、xsl:if、xsl:message、xsl:otherwise、xsl:param、xsl:processing-instruction、xsl:template、xsl:variable、xsl:when、xsl:with-param、出力要素 |
子要素 |
(子要素はありません) |
解説
式の評価の結果が結果ツリー フラグメントである場合は、完全なフラグメントが結果ツリーにコピーされます。 結果がノード セットである場合は、セット内のすべてのノードがドキュメント順で結果ツリーにコピーされます。 要素ノードをコピーすると、その要素ノード自身のほか、属性ノード、名前空間ノード、および要素ノードの子もコピーされます。 ルート ノードは、ルート ノードの子をコピーすることによってコピーされます。 結果がノード セットでも結果ツリー フラグメントでもない場合は、<xsl:value-of> の場合と同様に、結果が文字列に変換された後、結果ツリーに挿入されます。
使用例
このサンプル XSLT ファイルをサンプル XML ファイルに対して実行することで、子要素として <given-name> および <family-name> を含む <person> 要素を検索します。 段落には、現在のノードの最初の <given-name> 子要素 (属性と子要素を含む) が含まれ、その後にスペースを挟んで、現在のノードの最初の <family-name> 子要素 (属性と子要素を含む) が含まれます。
XML ファイル (family.xml)
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="family.xsl"?>
<family>
<person>
<given-name age="10">
<name>Fred</name>
<nick-name>Freddy</nick-name>
</given-name>
<family-name>Smith</family-name>
</person>
<person>
<given-name age="10">
<name>Robert</name>
<nick-name>Bob</nick-name>
</given-name>
<family-name>Smith</family-name>
</person>
</family>
XSLT ファイル (family.xsl)
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
<xsl:template match="person">
<p>
<xsl:copy-of select="given-name"/>
<xsl:text> </xsl:text>
<xsl:copy-of select="family-name"/>
</p>
</xsl:template>
</xsl:stylesheet>
出力
これは書式付き出力です。
Fred Freddy Smith
Robert Bob Smith
以下は、プロセッサ出力です (わかりやすくするために改行を追加してあります)。
<?xml version="1.0"?>
<p><given-name age="10">
<name>Fred</name>
<nick-name>Freddy</nick-name>
</given-name>
<family-name>Smith</family-name></p>
<p><given-name age="10">
<name>Robert</name>
<nick-name>Bob</nick-name>
</given-name>
<family-name>Smith</family-name></p>