Here is a stylesheet which will do what you want
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<!-- pass in as -param uid "'value'" -->
<xsl:param name="uid"/>
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
<xsl:element name="staff">
<xsl:apply-templates select="//user"/>
</xsl:element>
</xsl:template>
<!-- output nodes that match -->
<xsl:template match="user">
<xsl:if test="id=$uid">
<xsl:element name="user">
<xsl:element name="id"><xsl:value-of select="$uid"/></xsl:element>
<xsl:element name="rank">Administrator</xsl:element>
</xsl:element>
</xsl:if>
<xsl:if test="id!=$uid">
<xsl:copy-of select="."/>
</xsl:if>
</xsl:template>
</xsl:stylesheet>