Re: [xsl] complex positioning problem

Subject: Re: [xsl] complex positioning problem
From: Wendell Piez <wapiez@xxxxxxxxxxxxxxxx>
Date: Fri, 29 Oct 2004 13:32:09 -0400
At 01:26 PM 10/29/2004, you wrote:
I'd try doing this by first processing the entire document expanding my citations into an (ad-hoc, locally-namespaced) markup format that provides each citation or footnote reference with whatever information it needs apart from the first/subsequent rule (that is, as if they were thence to be rendered all alike irrespective of their positions in the final list), and then in a second pass introduce the Ibid/Idem, op.cit., etc. based on their positions relative to one another. The rest of the second pass could be an identity transform otherwise, assuming there's nothing else it is useful for it to do.

I guess my question is how to handle that last pass; the "based on their positions relative to one another" bit.

Well in that pass, their relative positions are determinable in reference to "document order". So, for example, they could be collected in a variable in which position() could be checked, or even axes used to look at the immediate preceding one, etc.


Of course, XSLT 2.0 / XPath 2.0 also lets you construct sequences, which could provide an even more direct way to do this, though perhaps not quite as clean.

I append your code and a bit of spec from earlier in case anyone has time today to try it (using either or any approach), noting that this sample should be extended to exhibit the requirement:

<?xml version="1.0" encoding="utf-8"?>
<article xmlns="http://docbook.org/docbook-ng";>
  <info>
    <title>Test</title>
  </info>
  <section>
    <info>
      <title>Introduction</title>
    </info>
    <para>Some citations: <citation><biblioref linkend="one"/><biblioref
    linkend="two"/></citation></para>
  </section>
  <bibliography>
    <modsCollection xmlns="http://www.loc.gov/mods/v3";>
      <mods ID="one">
        <name type="personal">
          <namePart type="given">John</namePart>
          <namePart type="family">Doe</namePart>
          <role>
            <roleTerm type="text">author</roleTerm>
          </role>
        </name>
        <titleInfo>
          <title>Some Title</title>
        </titleInfo>
        <originInfo>
          <dateIssued>1999</dateIssued>
        </originInfo>
      </mods>
      <mods ID="two">
        <name type="personal">
          <namePart type="given">John</namePart>
          <namePart type="family">Doe</namePart>
          <role>
            <roleTerm type="text">author</roleTerm>
          </role>
        </name>
        <titleInfo>
          <title>Another Title</title>
        </titleInfo>
        <originInfo>
          <dateIssued>1999</dateIssued>
        </originInfo>
      </mods>
    </modsCollection>
  </bibliography>
</article>

The most difficult one is note (footnote/endnote) style, whereby rendering of citations is determined by their relative position within the text. For example, we have:

1) First/subsequent.

On the first occurrence of a citation reference, we have one rendering. On all subsequent, we have another (shorter).

2) Ibid/Idem, op.cit.

When a parameter is switched on, then if one has the same single citation repeated immediately subsequent, then it gets rendered as "Ibid", if the same group of citations repeat, it's "Idem".

Cheers, Wendell

Cheers,
Wendell


====================================================================== Wendell Piez mailto:wapiez@xxxxxxxxxxxxxxxx Mulberry Technologies, Inc. http://www.mulberrytech.com 17 West Jefferson Street Direct Phone: 301/315-9635 Suite 207 Phone: 301/315-9631 Rockville, MD 20850 Fax: 301/315-8285 ---------------------------------------------------------------------- Mulberry Technologies: A Consultancy Specializing in SGML and XML ======================================================================

Current Thread