Predicates don't have to be at the end:
computer[price]/specs slide[citation]/cite[@ref]
The "filter" is applied at each step.
Keep in mind that predicates have additional cost and templates may be faster:
<xsl:template match="slide[citation]"> <xsl:apply-templates select="cite[@ref]"/> </xsl:template>