xsl-list
[Top] [All Lists]

RE: xsl:number and conditional

2005-05-31 15:10:54
$footcite in this context is a function parameter that is defined as
element(), but in practice is either db:footnote or db:citation.  So I
have:

  <xsl:function name="bib:number-footcite" as="xs:string">
    <xsl:param name="footcite" as="element()"/>
    <xsl:choose>
      <xsl:when test="$chapters/db:chapter">
        <xsl:number level="any" select="$footcite"
          
count="db:footnote|db:citation[not($footcite/ancestor::db:footnote)]"
from="db:chapter"/>
      </xsl:when>
      <xsl:otherwise>
        <xsl:number level="any" select="$footcite"
          
count="db:footnote|db:citation[not($footcite/ancestor::db:foot
note)]"/>
      </xsl:otherwise>
    </xsl:choose>
  </xsl:function>

Does a footnote ever have a footnote as an ancestor? If not then

I then call the function in those templates like so:

      <xsl:template match="db:citation">
        <xsl:choose>
          <xsl:when test="$citeclass='note-bib' or 
$citeclass='note-nobib'">
            <xsl:variable name="footnote-number">
              <xsl:value-of select="bib:number-footcite(.)"/>
            </xsl:variable>


Don't do this, do 
  <xsl:variable name="footnote-number" select="bib:number-footcite(.)"/>


I think the important thing here is that if you want consecutive numbers,
the elements you call xsl:number on must be the same elements that you match
in the count="" pattern of xsl:number. It's not obvious from your code that
this is the case here: but without the source structure and information
about when this template is being invoked, it's impossible to tell.

Michael Kay
http://www.saxonica.com/



            <xsl:text>[</xsl:text>
            <a href="#fn{$footnote-number}" 
name="fnm{$footnote-number}"
class="footnote-mark">
              <xsl:value-of select="$footnote-number"/>
            </a>
            <xsl:text>]</xsl:text>
          </xsl:when>
          <xsl:otherwise>
            <xsl:call-template name="bib:format-citation">
              <xsl:with-param name="output-format" select="'xhtml'"/>
            </xsl:call-template>
          </xsl:otherwise>
        </xsl:choose>
      </xsl:template>

So if I don't specify not to count db:citation elements that are
descendents of db:footnote, they get double-counted.

Bruce

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--





--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



<Prev in Thread] Current Thread [Next in Thread>