The "copy with recursion" permits, changing little portions of code, produce entire new and different output, filtering or updating the input.
XSLT 3.0[2] specifies an on-no-match attribute of the xsl:mode instruction that allows the identity transform to be declared rather than implemented as an explicit template rule.
Finally, note that markup details, such as the use of CDATA sections or the order of attributes, are not necessarily preserved in the output, since this information is not part of the XPath data model.
cdata-section-elements specifies a list of the names of elements whose text node children should be output using CDATA sections.
The typeswitch transform is sometime preferable since it can easily be modified by simply adding a case statement for any element that needs special processing.