Полезный шаблон для вставки вещей в XML - использовать преобразование идентичности для копирования всего и просто переопределить его для тегов, которые вы хотите изменить:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
version="1.0">
<xsl:output method="xml"
indent="yes"/>
<!-- identity transform -->
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<!-- special handling for soap:Header -->
<xsl:template match="soap:Header">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
<!-- insert the following inside the soap:Header tag -->
<ut:reqCode xmlns:ut="temp.org">
<ut:reqInfo>information from request</ut:reqInfo>
</ut:reqCode>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
Это в основном просто копирует все, но для soap:Header
после копирования его содержимого добавляет некоторый дополнительный контент.