Am not sure how to tackle this.
Simple example:
<para>
  Standard citation: <citation><biblioref linkend="one"/></citation>.
  Citation in a footnote: <footnote><para>And another citation
    <citation><biblioref linkend="two"/></citation></para></footnote>
</para>
So, I have a regular citation, and a citation within a footnote.
The problem:
I want a parameter -- called citation-class -- where one option is 
author-year (what I've been working on), and another is "footnote."
When the parameter is set to footnote, all citations get treated as if 
they were a footnote (e.g. they become footnoted on output), unless 
they are already in a footnote, in which case they just get rendered.
I'm thinking I need to be doing something like this:
<xsl:template match="db:footnote|db:citation">
  <xsl:choose>
    <xsl:when test="$class='footnote'">
      ...
    </xsl:when>
    <xsl:otherwise>
      ...
    </xsl:otherwise>
  </xsl:choose>
</xsl:template>
But I'm not sure quite what to do next, or b) if there a better way to 
do this?  Maybe somehow using modes?
Bruce