You need to know and remember one most important thing: the rule of identity .
Here is a very simple and compact solution using the most fundamental XSLT design pattern: using and overriding the identity rule:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:template match="node()|@*" name="identity">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="/*/*[1]">
<someNewElement/>
<xsl:call-template name="identity"/>
</xsl:template>
</xsl:stylesheet>
XML-, :
<XmlFile>
<someNewElement />
<tag>
<innerTag>
</innerTag>
</tag>
<tag>
<innerTag>
</innerTag>
</tag>
<tag>
<innerTag>
</innerTag>
</tag>
</XmlFile>