XSL勉強中

子供要素がなく、その属性だけを取得したい場合、

<xsl:template match="要素">
 <xsl:value-of select="@属性" />
</xsl:template>

としても、該当部分に「マッチ」してくれないみたい。で、ルートノードの全要素が対象になり、結局ルートノード全要素の値を取得してくれる。こういうのってどうしたらいいのだろうか?
いろいろやってみて、いまのところ、

<xsl:template match="親要素">
 <xsl:value-of select="child::要素/@属性" />
</xsl:template>

で対処しているんだが。。。