<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
<xsl:output indent="yes"/>
<xsl:template match="/">
<xsl:apply-templates mode="x" select="/">
<xsl:with-param name="x" select="'manhattan'"/>
</xsl:apply-templates>
</xsl:template>
<xsl:template mode="x" match="/|*">
<xsl:param name="x"/>
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:if test="descendant-or-self::page[(_at_)name=$x]">
<xsl:apply-templates mode="x" select="*">
<xsl:with-param name="x" select="$x"/>
</xsl:apply-templates>
</xsl:if>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
produces
$ saxon tree.xml tree.xsl
<?xml version="1.0" encoding="utf-8"?>
<linkmap>
<page name="index">
<page name="about"/>
<page name="events"/>
<page name="contact">
<page name="directions">
<page name="new-york">
<page name="manhattan">
<page name="uptown"/>
</page>
<page name="bronx"/>
</page>
<page name="paris"/>
</page>
</page>
</page>
</linkmap>
David
________________________________________________________________________
This e-mail has been scanned for all viruses by Star. The
service is powered by MessageLabs. For more information on a proactive
anti-virus service working around the clock, around the globe, visit:
http://www.star.net.uk
________________________________________________________________________