Re: [xsl] sorting titles w stopwords but w/o value in every title node

Subject: Re: [xsl] sorting titles w stopwords but w/o value in every title node
From: "Susan Campbell" <SCampbell@xxxxxxxxxxxxxx>
Date: Mon, 30 Aug 2004 09:01:10 -0400
Thanks for the help. (I am still referring to the stop-words variable with
document('')/xsl:stylesheet/sw:stop/word because that does give me the sort
order. Because
our setup, that may be my only option.)

The problem I still have is that entries without a value in the title sort
first.
I need to group by title when the doc-number is the same. It may be both a
sorting
and grouping problem, but I don't know how to go about it.

(The doc number is included only for testing. I left out imprint and ISBN from
this sample for clarity. It is possible to have the same issue or different
issue arrive on the same or different days as there are multiple
subscriptions.)

The output I need is:
doc#	Title				      Description			Arrived date
53690 American Artist 			v.68:no.738(2004:Jan.)	 02/26/2004
57769	The American city & country	v.119:no.1(2004:Jan.)	 02/11/2004
57769						v.119:no.3(2004:Mar.)	 03/25/2004
58345 American demographics		v.26:no.1(2004:Feb.)	 02/05/2004
58345 					v.26:no.1(2004:Feb.)	 02/26/2004
58345 					v.26:no.2(2004:Mar.)	 02/26/2004
58345						v.26:no.2(2004:Mar.)	 02/26/2004

Sample of problem causing xml:
-------------
<section-02>
<title>Forbes.</title>
<isbn-issn>0015-6914</isbn-issn>
<doc-number>58615</doc-number>
<description>v.173:no.5(2004:Mar.15)</description>
<arrival-date>03/15/2004</arrival-date>
</section-02>

<section-02>
<title></title>
<isbn-issn-code></isbn-issn-code>
<doc-number>58615</doc-number>
<description>v.173:no.1(2004:Jan. 12)</description>
<arrival-date>01/12/2004</arrival-date>
</section-02>

<section-02>
<title></title>
<isbn-issn-code></isbn-issn-code>
<doc-number>58615</doc-number>
<description>v.173:no.2(2004:Feb. 02)</description>
<arrival-date>01/21/2004</arrival-date>
</section-02>

My stylesheet:
-------------
<xsl:stylesheet
   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; version="1.0"
   xmlns:sw="mailto:bubba@xxxxxxx";
   exclude-result-prefixes="sw">
<xsl:include href="funcs.xsl"/>
<sw:stop>
	<word>the</word>
	<word>a</word>
	<word>an</word>
</sw:stop>
<xsl:variable name="stop-words"
select="document('')/xsl:stylesheet/sw:stop/word"/>
<xsl:variable name="lowercase" select="'abcdefghijklmnopqrstuvwxyz'"/>
<xsl:variable name="uppercase" select="'ABCDEFGHIJKLMNOPQRSTUV'"/>

<xsl:template match="/">
<table border="'1'">
<th colspan="6">Arrived Issues sorted without stop words</th>
<tr>
<td align="center"><b/>number</td>
<td align="center"><b/>Title</td>
<td align="center"><b/>ISBN-ISSN</td>
<td align="center"><b/>Imprint</td>
<td align="center"><b/>Description</td>
<td align="center"><b/>Arrived</td>
</tr>
<xsl:for-each select="//section-02/z13-title">
<xsl:sort select="concat(substring(substring-after(.,' '), 0 div boolean
($stop-words[starts-with(translate(current(), $uppercase, $lowercase),
concat(translate(., $uppercase, $lowercase), ' '))])), substring(., 0 div not
($stop-words[starts-with(translate(current(), $uppercase, $lowercase),
concat(translate(., $uppercase, $lowercase), ' '))])))"/>

<xsl:sort select="number(concat(substring(../z30-arrival-date, 7,4),
substring(../z30-arrival-date, 1,2),
substring(../z30-arrival-date, 4,2)))" order="descending"/>

<tr>
<td width="10%"><xsl:value-of select="../z30-doc-number"/></td>
<td width="30%"><xsl:value-of select="../z13-title" /></td>
<td width="10%"><xsl:value-of select="../z13-isbn-issn"/></td>
<td width="20%"><xsl:value-of select="../z13-imprint"/></td>
<td width="20%"><xsl:value-of select="../z30-description"/></td>
<td width="10%"><xsl:value-of select="../z30-arrival-date"/></td>
</tr>
</xsl:for-each>
</table>
</xsl:template>
</xsl:stylesheet>

Thanks,
Susan Campbell
College Center for Library Automation
1753 W. Paul Dirac Drive
Tallahassee, FL 32310
850-922-6044

Current Thread