Элемент <xsl:copy-of>

Вставляет в результирующее дерево поддеревья и фрагменты результирующего дерева.

<xsl:copy-of
  select = Expression />

Атрибуты

  • select
    Обязательный.Выражение XPath Выражения (XML), задающее узлы для копирования.Поддерево под каждым из этих узлов копируется в результирующее дерево целиком.

Сведения об элементе

Количество вхождений

Без ограничений

Родительские элементы

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-файла для поиска элемента <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>

См. также

Справочник

Элемент <xsl:value-of>