<xsl:template match="person">
<xsl:apply-templates select="reverse(*)"/>
</xsl:template>
Эээ, извините, это для того, чтобы полностью изменить их, я вижу, что вы действительно не хотите полностью изменять все.
В этом случае самый простой способ - просто вручную закодировать заказв атрибуте `select:
<xsl:template match="person">
<xsl:apply-templates select="name[2]"/>
<xsl:apply-templates select="id[2]"/>
<xsl:apply-templates select="name[1]"/>
<xsl:apply-templates select="id[1]"/>
...
</xsl:template>
(Кстати, это не очень хороший формат для хранения ваших данных, вы должны заключить каждого человека в тег <person>
, просто записав его одинпосле другого, а затем возиться с заказом, случается несчастный случай.)