Чтобы скопировать полный XML-документ, необходимо иметь шаблон, соответствующий корню. Это может быть:
<xsl:template match="/">
или
<xsl:template match="node()">
Тогда достаточно одного копирования текущего узла (корневого узла):
<xsl:copy-of
select = "." />
Итак, одно из таких полных преобразований:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:copy-of select="."/>
</xsl:template>
</xsl:stylesheet>
Хотя это, вероятно, самое простое подобное преобразование, XSLT-программисты используют другое, широко известное как identity transformation
или identity rule
:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
Резонанс, что преобразование идентичности считается одним из самых фундаментальных шаблонов проектирования XSLT и настолько широко используется, заключается в том, что, переопределяя это правило шаблона с другими, более конкретными шаблонами, можно очень легко выполнять различные операции, которые иначе будет сложно. Примерами являются удаление определенного (набора) элемента (ов), которые имеют определенное имя или удовлетворяют некоторым другим условиям, переименование определенных элементов, изменение пространства имен конкретных элементов, создание новых дочерних или родственных элементов определенных элементов, ... и т. Д.
Для получения дополнительной информации и фрагментов кода с использованием преобразования идентификаторов, посмотрите здесь .