Let's assume that the XML you showed us has an ItemList element wrapped around it, and that there's no namespace declaration. Then you're almost there.
Generating a br element inside the HTML head element is bad HTML, but it's not bad XSLT.
This template:
Code:
<xsl:template match="Name">
<p>
<a>
<xsl:attribute name="href">
<xsl:value-of select="@URL"/>
</xsl:attribute>
<xsl:value-of select="."/>
</a>
</p>
</xsl:template>
is almost right, but URL is an element not an attribute so you don't want that '@' sign. It's on the same level as Name, so you need to address it as <code>../URL</code>. It can then be simplified to
Code:
<xsl:template match="Name">
<p><a href="{../URL}"><xsl:value-of select="."/></a></p>
</xsl:template>
Finally, in this template:
Code:
<xsl:template match="Item">
<xsl:apply-templates select="Name"/>
<xsl:apply-templates select="URL"/>
</xsl:template>
you don't need to do anything with the URL at this level (you've handled it while processing the Name), so just cut out that second apply-templates.