<?xml version="1.0"?>
<staff>
<user>
<id>A</id>
<rank>User</rank>
</user>
<user>
<id>B</id>
<rank>User</rank>
</user>
<user>
<id>C</id>
<rank>Administrator</rank>
</user>
</staff>

I have to promote to "Administrator" a random user using XPath.
How can I do it?

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>
Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.