xsl-list
[Top] [All Lists]

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

2004-08-26 16:08:18
Hello Susan,

<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"/>

I didn't know this was possible? Selecting elements from the stylesheet by 
using document('')
Anyway, it didn't work for me... so I put the stop-words in a separate file and 
used
"document('stop-words.xml')/stop/word" instead; that worked.

(I also corrected the "uppercase" variable: the last 4 chars are missing)

Then, after some experimenting, I succeeded in sorting twice, with empty titles 
included,
simply by omitting [text()!=''] from your first for-each select. Like this:

    <xsl:for-each select="//section-02/title"> <!-- removed [text()!=''] -->
     <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(../arrival-date, 7,4),
     substring(../arrival-date, 1,2), substring(../arrival-date, 4,2)))" 
order="descending"/>
     <!-- added ../ -->

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

You were really close, I guess... I hope I didn't miss something, but I think 
it works now

Best regards,
Anton Triest