RE: [xsl] regexs, grouping (?) and XSLT2?

Subject: RE: [xsl] regexs, grouping (?) and XSLT2?
From: "Michael Kay" <mhk@xxxxxxxxx>
Date: Sun, 8 Aug 2004 23:45:14 +0100
> With respect to the other issue, below is an example doc; might be 
> easier to understand.
> 
> So, the para output would be something like:
> 
> <p>Some citations: (Doe, 1999a, 1999b; Doe and Jones, 1999)</p>

I think you're trying to solve several problems at the same time here. It
fails my 10-minute rule: I never spend more than ten minutes answering a
question on this list. Essentially both the para output and the list of
citations are grouping problems that can be tackled using
xsl:for-each-group, probably using group-adjacent. You may need to write a
function that calculates the grouping key. The suffix "a", "b" etc can be
obtained using xsl:number. It may be simplest to start by generating a copy
of the bibliography in which the list of authors (Doe and Jones) and the
year/serial (1999b) appear as additional computed child elements or
attributes, and then working with this copy.

Michael Kay




> And in the bib list:
> 
> Doe (1999a)
> ----. (1999b)
> Doe and Jones (1999)
> 
> ============
> 
> <?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"/><biblioref linkend="three"/></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>
>        <mods ID="three">
> 	<name type="personal">
> 	  <namePart type="given">John</namePart>
> 	  <namePart type="family">Doe</namePart>
> 	  <role>
> 	    <roleTerm type="text">author</roleTerm>
> 	  </role>
> 	</name>
> 	<name type="personal">
> 	  <namePart type="given">Jane</namePart>
> 	  <namePart type="family">Jones</namePart>
> 	  <role>
> 	    <roleTerm type="text">author</roleTerm>
> 	  </role>
> 	</name>
> 	<titleInfo>
> 	  <title>Some Title</title>
> 	</titleInfo>
> 	<originInfo>
> 	  <dateIssued>1999</dateIssued>
> 	</originInfo>
>        </mods>
>      </modsCollection>
>    </bibliography>
> </article>

Current Thread