<xsl:copy-of> 元素
将子树和结果树片断插入结果树。
<xsl:copy-of
select = Expression />
特性
- 选择
必选。标识要复制的节点的 XPath 表达式 (XML)。每个节点下面的子树将整个复制到结果树中。
元素信息
注释
如果计算表达式得出的结果是结果树片断,整个片断将复制到结果树中。如果结果为节点集,节点集中的所有节点将按文档顺序复制到结果树中。复制元素节点的同时,也将复制属性节点、命名空间节点和元素节点的子级以及元素节点本身。根节点通过复制其子级进行复制。如果结果既不是节点集,也不是结果树片断,结果将转换为字符串,然后插入结果树中,与 <xsl:value-of> 相同。
示例
该示例 XSLT 文件针对示例 XML 文件进行操作,查找 <person> 元素以及 <given-name> 和 <family-name> 子元素。该段将包含当前节点的第一个 <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>