Re: [xsl] Sorting a TEI list of biblFull with the date as descendant of the author element

Subject: Re: [xsl] Sorting a TEI list of biblFull with the date as descendant of the author element
From: Wendell Piez <wapiez@xxxxxxxxxxxxxxx>
Date: Thu, 3 Apr 2014 10:49:48 -0400
Chiara,

On the surface, this sounds like a bug, which should be reported to
the vendor of your processor.

But I have not looked at the specification for sorting, and maybe the
bug is there. :-)

Cheers, Wendell


On Mon, Mar 31, 2014 at 7:40 PM,  <chiara@xxxxxxxxxxx> wrote:
> Thanks,
> now my sorting works. Just a short question. I managed to do the sorting in
the root element. I have dates that are B.C. and A.D. and rightly I obtain the
B.C. first and then the A.D. The B.C. are from the earliest to the oldest, and
this is wrong. Should I do something in order that <date
when=b-0004-03b>4-3 B.C.</date> comes before <date when=b-0003b>3
B.C.</date>?
> Thanks again.
> Chiara Salvagni
>
> Date: Fri, 28 Mar 2014 10:26:13 -0400
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> From: Wendell Piez <wapiez@xxxxxxxxxxxxxxx>
> Subject: Re: [xsl] Sorting a TEI list of biblFull with the date as
descendant
> of the author element
> Message-ID:
<CAAO_-xxrthcVXHXxzuXdJNAj3yWZeuyFLiERGkUNA0BWqZY+qw@xxxxxxxxxxxxxx>
>
> Chiara,
>
> As I understand it, your question, "do I need to sort, the biblFull or
> the titleStmt?", is one we can't answer. This is part of your
> requirements specification.
>
> Sort the biblFull elements if you want your bibliography presented in
> order of the date given in its entries. Sort the titleStmt if you
> expect your biblFull to have more than one titleStmt (will this ever
> happen?), and you want their titles sorted by their author dates when
> the bibliography is given (in document order).
>
> I think you probably want your bibliography sorted, no?
>
> Wouldn't this be something like (in your template matching the root):
>
> <xsl:apply-templates select=3D"div[@type=3D'bibliography']/biblFull">
>  <xsl:sort select=3D"descendant::author/date/@when"/>
>  (etc.)
>
> BTW, the <xsl:value-of select=3D"div[@bibliography]"/> will do nothing
> useful, probably nothing at all: it generates a node containing the
> string value of a div child (of the matched node, i.e. the root) with
> a @bibliography attribute. Such a div is nowhere to be found, as a
> child of the root or otherwise.
>
> In general, I think you'll find it is easier to solve this problem if
> you reduce it to a smaller one. Rather than adding code that might
> (you hope) do what you want, delete everything that doesn't solve this
> particular problem (i.e. the order of presentation), solve it, then
> build the code back up by adding what else you need.
>
> Cheers, Wendell
>
> On Fri, Mar 28, 2014 at 9:57 AM,  <chiara@xxxxxxxxxxx> wrote:
>> I am using Oxygen and XSLT 2.0.
>> My TEI/XML file is a succession of biblFull elements, which needs to be s=
> orted via the attribute of the date element descendant of the author
elemen=
> t. I should add that there are more then one element with the same author
n=
> ame and attribute n and with the same date and attributes.
>> I think I realise that I need to sort select with the attribute of the da=
> te element, but at the moment I am struggling to figure out which element
I=
> need to sort, the biblFull or the titleStmt?
>> <text>
>>        <body>
>>            <div type=3D"bibliography">
>>                <biblFull>
>>                    <titleStmt>
>>                        <title xml:id=3D"b56">La Pr=C3=A9paration =C3=89v=
> ang=C3=A9lique/Preparatio Evangelica</title>
>>                        <author n=3D"Eusebius">Eusebius Theologus et Scri=
> ptor Ecclesiasticus<date when=3D"0004">A.D. 4</date></author>
>>                        <editor>=C3=89duard des Places, s.j.</editor>
>>                    </titleStmt>
>>                    <publicationStmt>
>>                        <publisher>Les =C3=89dition du Cerf</publisher>
>>                        <pubPlace>Paris</pubPlace>
>>                        <address><addrLine>29, Bd de Latour Mauburg</addr=
> Line></address>
>>                        <date>1980</date>
>>                        <availability><p>Copyright 1980, Les =C3=89dition=
> du Cerf</p></availability>
>>                    </publicationStmt>
>>                    <seriesStmt>
>>                        <title>Sources Chr=C3=A9tiennes</title>
>>                        <biblScope>n.266</biblScope>
>>                    </seriesStmt>
>>                </biblFull>
>> I only managed to create a sort with this XSLT, but I do not sort the ent=
> ire biblFull, only the date and the author
>> <xsl:template match=3D"/">
>>        <html>
>>            <head>
>>
>>                <link rel=3D"stylesheet" type=3D"text/css" href=3D"finale=
> .css"/>
>>            </head>
>>            <body bgcolor=3D"azure">
>>                <div id=3D"centeredmenu">
>>                <ul>
>>                    <li>
>>                        <a href=3D"Odyssey finale.html" target=3D"_self">=
> Home</a>
>>                    </li>
>>                    <li>
>>                        <a href=3D"Bibliography secondary sources.html" t=
> arget=3D"_self">Indirect
>>                            Tradition Bibliography</a>
>>                    </li>
>>                    <li>
>>                        <a href=3D"scholialista.html" target=3D"_self">Sc=
> holia</a>
>>                    </li>
>>                    <li>
>>                        <a href=3D"ManuscriptsBookI.html" target=3D"_self=
> ">Manuscripts Book I</a>
>>                    </li>
>>                    <li>
>>                        <a href=3D"#GeneralIntroduction">General Introduc=
> tion</a>
>>                    </li>
>>                    <li>
>>                        <a href=3D"#Dowmnloads">Downloads</a>
>>                    </li>
>>                    <li>
>>                        <a href=3D"#Contacts">Contacts</a>
>>                    </li>
>>                </ul>
>>                    </div>
>>                <p>
>>                    <xsl:value-of select=3D"div[@bibliography]"/>
>>                    <xsl:apply-templates select=3D"descendant::author[@n]=
> ">
>>
>>                        <xsl:sort select=3D"descendant::date[@when,@cert,=
> @intant,@notAfter,@notBefore]"/>
>>                        <xsl:sort select=3D"descendant::author[substring-=
> after(@n, '#')]"/>
>>                        <xsl:sort select=3D"@when,@cert,@intant,@notAfter=
> ,@notBefore"/>
>>                        <xsl:sort select=3D" substring-after(@n, '#')"/>
>>
>>                   </xsl:apply-templates>
>>                    <xsl:apply-templates/>
>>                </p>
>>
>>                <div class=3D"single">
>>                    <iframe src=3D"single authors.html" name=3D"single" h=
> eight=3D"600" width=3D"500"
>>                        />
>>                </div>
>>            </body>
>>        </html>
>>    </xsl:template>
>> The last thing I tried to do is to sort inside a biblFull, but I did not =
> manage to achieve anything.
>> <xsl:template match=3D"biblFull">
>>        <table border=3D"0">
>>            <xsl:for-each select=3D"descendant::titleStmt">
>>                <xsl:apply-templates select=3D"descendant::title[@xml:id]=
> "/>
>>                <xsl:apply-templates select=3D"descendant::title[@sameAs]=
> "/>
>>                <xsl:apply-templates select=3D"descendant::author[@n]">
>>                    <xsl:sort select=3D"descendant::date[substring-after(=
> @when, '#')]"/>
>>                    <xsl:sort select=3D"descendant::date[substring-after(=
> @cert, '#')]"/>
>>                    <xsl:sort select=3D"descendant::date[substring-after(=
> @instant, '#')]"/>
>>                    <xsl:sort select=3D"descendant::date[substring-after(=
> @notAfter, '#')]"/>
>>                    <xsl:sort select=3D"descendant::date[substring-after(=
> @notBefore, '#')]"/>
>>                </xsl:apply-templates>
>>                <xsl:apply-templates select=3D"descendant::editor"/>
>>                </xsl:for-each>
>>            <xsl:for-each select=3D"publicationStmt">
>>                    <xsl:apply-templates select=3D"publisher"/>
>>                    <xsl:apply-templates select=3D"pubPlace"/>
>>                    <xsl:apply-templates select=3D"address"/>
>>                    <xsl:apply-templates select=3D"date"/>
>>                    <xsl:apply-templates select=3D"availability"/>
>>                </xsl:for-each>
>>            <xsl:for-each select=3D"seriesStmt">
>>                <xsl:apply-templates select=3D"title"/>
>>                <xsl:apply-templates select=3D"biblScope"/>
>>            </xsl:for-each>
>>        </table>
>>    </xsl:template>
>> Thanks.
>> Chiara Salvagni
>>
>
> --=20
> Wendell Piez | http://www.wendellpiez.com
> XML | XSLT | electronic publishing
> Eat Your Vegetables
> _____oo_________o_o___ooooo____ooooooo_^
>
> ------------------------------
>



--
Wendell Piez | http://www.wendellpiez.com
XML | XSLT | electronic publishing
Eat Your Vegetables
_____oo_________o_o___ooooo____ooooooo_^

Current Thread