positioning

I played a bit with figuring out how to handle the number and note
class positioning issues.

Maybe this is a start?

<xsl:variable name="citerefs" select="//db:biblioref/@linkend"/>

<xsl:variable name="cite-position">
   <bib:refs>
      <bib:all>
         <xsl:for-each select="$citerefs">
            <bib:ref position="{position()}" id="{generate-id()}"  

key="{.}" />
</xsl:for-each>
</bib:all>
bib:unique
<xsl:for-each-group select="$citerefs" group-by=".">
<bib:ref position="{position()}" id="{generate-id()}“
key=”{.}" />
</xsl:for-each-group>
</bib:unique>
</bib:refs>
</xsl:variable>

Result:

         <bib:refs>
            <bib:all>
               <bib:ref position="1" id="d1e12a1745"  

key=“Tilly2000a”></bib:ref>
<bib:ref position=“2” id="d1e13a1745"
key=“Thrift1990a”></bib:ref>
<bib:ref position=“3” id="d1e14a1745"
key=“TimesP2001a”></bib:ref>
<bib:ref position=“4” id="d1e19a1745"
key=“Veer1996a”></bib:ref>
<bib:ref position=“5” id="d1e25a1745"
key=“Tilly2000a”></bib:ref>
</bib:all>
bib:unique
<bib:ref position=“1” id="d1e12a1745"
key=“Tilly2000a”></bib:ref>
<bib:ref position=“2” id="d1e13a1745"
key=“Thrift1990a”></bib:ref>
<bib:ref position=“3” id="d1e14a1745"
key=“TimesP2001a”></bib:ref>
<bib:ref position=“4” id="d1e19a1745"
key=“Veer1996a”></bib:ref>
</bib:unique>
</bib:refs>

My thought is that with, for example, the number class, you can then do:

<xsl:template match=“db:citation”>
xsl:text[</xsl:text>
<xsl:for-each select=“db:biblioref”>
<xsl:apply-templates select="." />
<xsl:if test=“not(position() = last())”>
xsl:text, </xsl:text>
</xsl:if>
</xsl:for-each>
xsl:text]</xsl:text>
</xsl:template>

<xsl:template match=“db:biblioref”>
<xsl:variable name=“linkend” select="@linkend"/>
<xsl:value-of

select="$cite-position/bib:refs/bib:unique/bib:ref[@key=$linkend]/
@position" />
</xsl:template>

Am not sure how the logic that’d work to get, for example,
first/subsequent footnotes.

Bruce