<xsl:template match="//p" ><xsl:template match="p" > の違いが良くわかりません。
わかりやすくご解説可能な方がいらっしゃいましたら宜しくお願いいたします。

例えば以下のような stylesheet の場合、<xsl:template match="//p" > が優先して処理されます。

<!-- xml -->
<?xml version="1.0" encoding="UTF-8"?>
<root>
    <p p="1">
        <p p="2">
            <p p="3"/>
        </p>
    </p>
</root>

<!-- stylesheet -->
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    exclude-result-prefixes="xs"
    version="2.0">

    <xsl:template match="//p" >
        <xsl:copy-of select="."></xsl:copy-of>
        <xsl:value-of select="'//p'"/>
    </xsl:template>

    <xsl:template match="p" >
        <xsl:copy-of select="."></xsl:copy-of>
        <xsl:value-of select="'p'"/>
    </xsl:template>

</xsl:stylesheet>