xsl-list
[Top] [All Lists]

Re: [BULK] [xsl] Sorting a TEI <biblStruct> bibliography by <surname>

2014-07-20 09:06:34
Your code works for me, Charles. (I'm running it as XSLT 2.0 using
Saxon-HE 9.5.1.3J on the commandline.)

HOWEVER, the select= attribute of your <xsl:sort> will try to select *all*
of the <surname> descendants of each child of each <biblStruct>. If
there is more than one, you will get "max 1 item allowed on
xsl:sort/@select" or some such. E.g.
    <biblStruct>
      <monogr>
        <title>Mooses Come Walking</title>
        <author>
          <persName>
            <forename>Arlo</forename> <surname>Guthrie</surname>
          </persName>
        </author>
        <respStmt>
          <resp>illustrator</resp>
          <persName>
            <forename>Alice</forename> <surname>Brock</surname>
          </persName>
        </respStmt>
        <imprint>
          <publisher>Chronicle Books</publisher>
          <pubPlace>San Francisco</pubPlace>
          <date when="1995"/>
        </imprint>
      </monogr>
      <idno type="ISBN">0-8118-1051-8</idno>
    </biblStruct>
dies with that kind of message. (Besides, even if it worked, it would
sort differently depending on whether <author> or <respStmt> happened
to appear first, which is fragile. And yes, Alice Brock is the
"Alice" of _Alice's Restaurant_.)

Using TEI-P5 <biblStruct> format, I'm trying to sort a bibliography
by surname. Some sample entries are like this (such that <surname>
falls under varying paths):

<biblStruct
xml:id="Buswell-1989"><monogr><author><surname>Buswell</surname><forename>Robert
E., Jr.</forename></author><title level="m">The Formation of Ch'an
Ideology in China and
Korea</title><imprint><pubPlace>Princeton</pubPlace><publisher>Princeton
UP</publisher><date>1989</date></imprint></monogr></biblStruct>

<biblStruct xml:id="Chan-1967a"><monogr><editor
role="editor"><surname>Chan</surname><forename>Wing-tsit</forename></editor><title
level="m">Neo-Confucian Terms Explained</title><imprint><pubPlace>New
York</pubPlace><publisher>Columbia University
Press</publisher><date>1986</date></imprint></monogr></biblStruct>

<biblStruct
xml:id="Chien-1988"><analytic><author><surname>Ch'ien</surname><forename>Edward
T.</forename></author><title level="a">The Neo-Confucian
Confrontation with Buddhism: A Structural And Historical
Analysis</title></analytic><monogr><title level="j">Journal of
Chinese Philosophy</title><imprint><biblScope
type="vol">15</biblScope><date>1988</date><biblScope
type="pages">347–348</biblScope></imprint></monogr></biblStruct>


My code for handling <biblStruct> has been working fine for a number
of years, but I just recently tried to add the sort by <surname>. The
relevant part of the code looks like this (including my most recent
attempt at sorting, which generates error messages):


  <!-- Bibliographical renderings -->
<xsl:template match="TEI//listBibl">
  <xsl:for-each select="biblStruct">
    <xsl:sort select="*//surname"/>
   <p style="text-indent:-10mm;margin-left:10mm">
    <xsl:if test="@n">
     <span style="font-weight:bold;margin-left:2mm">
      <xsl:value-of select="@n"/>
      <xsl:text>-&#x09;</xsl:text>
     </span>
    </xsl:if>
      <xsl:apply-templates/>
   </p>
  </xsl:for-each>
</xsl:template>


Any advice would be greatly appreciated. Once I get this working, I'd
also like to do a second sort, based on the <title>. This is to get
output in Chicago Full Note style.

Regards,

Chuck




-- 

---------------------------
A. Charles Muller

Graduate School of Humanities and Sociology
Faculty of Letters
University of Tokyo
7-3-1 Hongō, Bunkyō-ku
Tokyo 113-8654, Japan

Office Phone: 03-5841-3735

Web Site: Resources for East Asian Language and Thought
http://www.acmuller.net

Twitter: @H_Buddhism


-- 
 Syd Bauman, EMT-Paramedic
 Senior XML Programmer/Analyst
 Northeastern University Women Writers Project
 s(_dot_)bauman(_at_)neu(_dot_)edu or
 Syd_Bauman(_at_)alumni(_dot_)Brown(_dot_)edu
--~----------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
EasyUnsubscribe: http://lists.mulberrytech.com/unsub/xsl-list/1167547
or by email: xsl-list-unsub(_at_)lists(_dot_)mulberrytech(_dot_)com
--~--

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