<
xsl:
stylesheet xmlns:xsl="
http://www.w3.org/1999/XSL/Transform"
xmlns:xd="
http://www.pnp-software.com/XSLTdoc"
xmlns:tei="
http://www.tei-c.org/ns/1.0"
xmlns:edate="
http://exslt.org/dates-and-times"
exclude-result-prefixes="
xd tei edate"
extension-element-prefixes="
edate"
version="
1.0">
<
xd:
doc type="
stylesheet">
<
xd:
short>
TEI stylesheet dealing with elements from the core module. </
xd:
short>
<
xd:
detail>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public License as
published by the Free Software Foundation; either version 2.1 of the
License, or (at your option) any later version. This library is
distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
details. You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA </
xd:
detail>
<
xd:
author>
See AUTHORS</
xd:
author>
<
xd:
cvsId>
$Id: core.xsl 4801 2008-09-13 10:05:32Z rahtz $</
xd:
cvsId>
<
xd:
copyright>
2008, TEI Consortium</
xd:
copyright>
</
xd:
doc>
<
xsl:
output indent="
no" />
<
xsl:
strip-space elements="
tei:author tei:forename tei:surname tei:editor" />
<
xsl:
key name="
MNAMES"
match="
tei:monogr/tei:author[tei:surname]|tei:monogr/tei:editor[tei:surname]"
use="
ancestor::tei:biblStruct/@xml:id" />
<
xsl:
key name="
ANAMES"
match="
tei:analytic/tei:author[tei:surname]|tei:analytic/tei:editor[tei:surname]"
use="
ancestor::tei:biblStruct/@xml:id" />
<
xd:
doc>
<
xd:
short>
Process all elements in depth</
xd:
short>
<
xd:
detail>
</
xd:
detail>
</
xd:
doc>
<
xsl:
template match="
tei:*"
mode="
depth">
99</
xsl:
template>
<
xd:
doc>
<
xd:
short>
Process all elements in plain mode</
xd:
short>
<
xd:
detail>
</
xd:
detail>
</
xd:
doc>
<
xsl:
template match="
tei:*"
mode="
plain">
<
xsl:
apply-templates mode="
plain" />
</
xsl:
template>
<
xsl:
template match="
tei:note"
mode="
plain" />
<
xsl:
template match="
tei:app"
mode="
plain" />
<
xsl:
template match="
tei:pb"
mode="
plain" />
<
xsl:
template match="
tei:lb"
mode="
plain" />
<
xsl:
template match="
tei:ptr"
mode="
plain" />
<
xd:
doc>
<
xd:
short>
Process tei:sic</
xd:
short>
<
xd:
detail>
</
xd:
detail>
</
xd:
doc>
<
xsl:
template match="
tei:sic">
<
xsl:
apply-templates />
</
xsl:
template>
<
xd:
doc>
<
xd:
short>
Process tei:corr</
xd:
short>
<
xd:
detail>
</
xd:
detail>
</
xd:
doc>
<
xsl:
template match="
tei:corr" />
<
xd:
doc>
<
xd:
short>
Process tei:item in runin mode</
xd:
short>
<
xd:
detail>
</
xd:
detail>
</
xd:
doc>
<
xsl:
template match="
tei:item"
mode="
runin">
<
xsl:
text>
• </
xsl:
text>
<
xsl:
apply-templates />
</
xsl:
template>
<
xd:
doc>
<
xd:
short>
Process elements tei:edition</
xd:
short>
<
xd:
detail>
</
xd:
detail>
</
xd:
doc>
<
xsl:
template match="
tei:edition">
<
xsl:
apply-templates />
<
xsl:
if test="
ancestor::tei:biblStruct">
<
xsl:
text>
.
</
xsl:
text>
</
xsl:
if>
</
xsl:
template>
<
xd:
doc>
<
xd:
short>
Process elements tei:imprint</
xd:
short>
<
xd:
detail>
</
xd:
detail>
</
xd:
doc>
<
xsl:
template match="
tei:imprint">
<
xsl:
choose>
<
xsl:
when test="
ancestor::tei:biblStruct">
<
xsl:
apply-templates select="
tei:date" />
<
xsl:
apply-templates select="
tei:pubPlace" />
<
xsl:
apply-templates select="
tei:publisher" />
<
xsl:
apply-templates select="
tei:biblScope" />
</
xsl:
when>
<
xsl:
otherwise>
<
xsl:
apply-templates />
</
xsl:
otherwise>
</
xsl:
choose>
</
xsl:
template>
<
xsl:
template name="
makeQuote">
<
xsl:
variable name="
pre">
<
xsl:
choose>
<
xsl:
when test="
contains(@rend,'PRE')">
<
xsl:
choose>
<
xsl:
when test="
contains(@rend,'POST')">
<
xsl:
call-template name="
getQuote">
<
xsl:
with-param name="
quote"
select="
normalize-space(substring-before(substring-after(@rend,'PRE'),'POST'))" />
</
xsl:
call-template>
</
xsl:
when>
<
xsl:
otherwise>
<
xsl:
call-template name="
getQuote">
<
xsl:
with-param name="
quote"
select="
normalize-space(substring-after(@rend,'PRE'))" />
</
xsl:
call-template>
</
xsl:
otherwise>
</
xsl:
choose>
</
xsl:
when>
<
xsl:
otherwise>
<
xsl:
value-of select="
$preQuote" />
</
xsl:
otherwise>
</
xsl:
choose>
</
xsl:
variable>
<
xsl:
variable name="
post">
<
xsl:
choose>
<
xsl:
when test="
contains(@rend,'POST')">
<
xsl:
call-template name="
getQuote">
<
xsl:
with-param name="
quote"
select="
normalize-space(substring-after(@rend,'POST'))" />
</
xsl:
call-template>
</
xsl:
when>
<
xsl:
otherwise>
<
xsl:
value-of select="
$postQuote" />
</
xsl:
otherwise>
</
xsl:
choose>
</
xsl:
variable>
<
xsl:
value-of select="
$pre" />
<
xsl:
apply-templates />
<
xsl:
value-of select="
$post" />
</
xsl:
template>
<!---->
<
xsl:
template match="
tei:biblStruct"
mode="
xref">
<
xsl:
choose>
<
xsl:
when test="
count(key('ANAMES',@xml:id))=1">
<
xsl:
value-of select="
key('ANAMES',@xml:id)/tei:surname" />
</
xsl:
when>
<
xsl:
when test="
count(key('ANAMES',@xml:id))=2">
<
xsl:
value-of select="
key('ANAMES',@xml:id)[1]/tei:surname" />
<
xsl:
text>
and </
xsl:
text>
<
xsl:
value-of select="
key('ANAMES',@xml:id)[2]/tei:surname" />
</
xsl:
when>
<
xsl:
when test="
count(key('ANAMES',@xml:id))>2">
<
xsl:
value-of select="
key('ANAMES',@xml:id)[1]/tei:surname" />
<
xsl:
text>
et al.</
xsl:
text>
</
xsl:
when>
<
xsl:
when test="
count(key('MNAMES',@xml:id))=1">
<
xsl:
value-of select="
key('MNAMES',@xml:id)/tei:surname" />
</
xsl:
when>
<
xsl:
when test="
count(key('MNAMES',@xml:id))=2">
<
xsl:
value-of select="
key('MNAMES',@xml:id)[1]/tei:surname" />
<
xsl:
text>
and </
xsl:
text>
<
xsl:
value-of select="
key('MNAMES',@xml:id)[2]/tei:surname" />
</
xsl:
when>
<
xsl:
when test="
count(key('MNAMES',@xml:id))>2">
<
xsl:
value-of select="
key('MNAMES',@xml:id)[1]/tei:surname" />
<
xsl:
text>
et al.</
xsl:
text>
</
xsl:
when>
<
xsl:
when test="
.//tei:author[tei:surname]">
<
xsl:
value-of select="
.//tei:author/tei:surname[1]" />
</
xsl:
when>
<
xsl:
when test="
.//tei:author[tei:orgName]">
<
xsl:
value-of select="
.//tei:author/tei:orgName[1]" />
</
xsl:
when>
<
xsl:
when test="
.//tei:author">
<
xsl:
value-of select="
.//tei:author[1]" />
</
xsl:
when>
<
xsl:
when test="
.//tei:editor[tei:surname]">
<
xsl:
value-of select="
.//tei:editor/tei:surname[1]" />
</
xsl:
when>
<
xsl:
when test="
.//tei:editor">
<
xsl:
value-of select="
.//tei:editor[1]" />
</
xsl:
when>
<
xsl:
otherwise>
<
xsl:
value-of select="
.//tei:title[1]" />
</
xsl:
otherwise>
</
xsl:
choose>
<
xsl:
choose>
<
xsl:
when test="
count(tei:*[1]/tei:editor)=1">
<
xsl:
text>
(ed.)</
xsl:
text>
</
xsl:
when>
<
xsl:
when test="
count(tei:*[1]/tei:editor)>1">
<
xsl:
text>
(eds.)</
xsl:
text>
</
xsl:
when>
</
xsl:
choose>
<
xsl:
choose>
<
xsl:
when test="
tei:monogr/tei:imprint/tei:date/@when">
<
xsl:
text>
(</
xsl:
text>
<
xsl:
value-of select="
substring-before(tei:monogr/tei:imprint/tei:date/@when,'-')" />
<
xsl:
text>
)</
xsl:
text>
</
xsl:
when>
<
xsl:
when test="
tei:monogr/tei:imprint/tei:date">
<
xsl:
text>
(</
xsl:
text>
<
xsl:
value-of select="
tei:monogr/tei:imprint/tei:date" />
<
xsl:
text>
)</
xsl:
text>
</
xsl:
when>
</
xsl:
choose>
</
xsl:
template>
<!---->
<
xsl:
template match="
tei:author|tei:editor">
<
xsl:
choose>
<!---->
<
xsl:
when test="
ancestor::tei:bibl">
<
xsl:
apply-templates />
</
xsl:
when>
<
xsl:
when test="
self::tei:author and not(following-sibling::tei:author)">
<
xsl:
apply-templates />
<
xsl:
text>
. </
xsl:
text>
</
xsl:
when>
<
xsl:
when test="
self::tei:editor and not(following-sibling::tei:editor)">
<
xsl:
apply-templates />
<
xsl:
text>
(</
xsl:
text>
<
xsl:
text>
ed</
xsl:
text>
<
xsl:
if test="
preceding-sibling::tei:editor">
s</
xsl:
if>
<
xsl:
text>
.</
xsl:
text>
<
xsl:
text>
) </
xsl:
text>
</
xsl:
when>
<
xsl:
otherwise>
<!---->
<
xsl:
apply-templates />
<
xsl:
text>
, </
xsl:
text>
</
xsl:
otherwise>
</
xsl:
choose>
</
xsl:
template>
<
xsl:
template match="
tei:surname">
<
xsl:
if test="
../tei:forename">
<
xsl:
apply-templates select="
../tei:forename"
mode="
use" />
<
xsl:
text>
</
xsl:
text>
</
xsl:
if>
<
xsl:
if test="
../tei:nameLink">
<
xsl:
apply-templates select="
../tei:nameLink"
mode="
use" />
<
xsl:
text>
</
xsl:
text>
</
xsl:
if>
<
xsl:
apply-templates />
</
xsl:
template>
<
xsl:
template match="
tei:forename">
</
xsl:
template>
<
xsl:
template match="
tei:nameLink">
</
xsl:
template>
<
xsl:
template match="
tei:forename"
mode="
use">
<
xsl:
if test="
preceding-sibling::tei:forename">
<
xsl:
text>
</
xsl:
text>
</
xsl:
if>
<
xsl:
apply-templates />
</
xsl:
template>
<
xsl:
template match="
tei:nameLink"
mode="
use">
<
xsl:
apply-templates />
</
xsl:
template>
<!---->
<
xsl:
template match="
tei:title">
<
xsl:
if test="
preceding-sibling::tei:title">
<
xsl:
text>
— </
xsl:
text>
</
xsl:
if>
<
xsl:
choose>
<
xsl:
when test="
@level='m' or not(@level)">
<
xsl:
call-template name="
emphasize">
<
xsl:
with-param name="
class">
<
xsl:
text>
titlem</
xsl:
text>
</
xsl:
with-param>
<
xsl:
with-param name="
content">
<
xsl:
apply-templates />
</
xsl:
with-param>
</
xsl:
call-template>
<
xsl:
if test="
ancestor::tei:biblStruct">
<
xsl:
text>
, </
xsl:
text>
</
xsl:
if>
</
xsl:
when>
<
xsl:
when test="
@level='s'">
<
xsl:
call-template name="
emphasize">
<
xsl:
with-param name="
class">
<
xsl:
text>
titles</
xsl:
text>
</
xsl:
with-param>
<
xsl:
with-param name="
content">
<
xsl:
apply-templates />
</
xsl:
with-param>
</
xsl:
call-template>
<
xsl:
if test="
following-sibling::* and ancestor::tei:biblStruct">
<
xsl:
text>
</
xsl:
text>
</
xsl:
if>
</
xsl:
when>
<
xsl:
when test="
@level='j'">
<
xsl:
call-template name="
emphasize">
<
xsl:
with-param name="
class">
<
xsl:
text>
titlej</
xsl:
text>
</
xsl:
with-param>
<
xsl:
with-param name="
content">
<
xsl:
apply-templates />
</
xsl:
with-param>
</
xsl:
call-template>
<
xsl:
text>
</
xsl:
text>
</
xsl:
when>
<
xsl:
when test="
@level='a'">
<
xsl:
call-template name="
emphasize">
<
xsl:
with-param name="
class">
<
xsl:
text>
titlea</
xsl:
text>
</
xsl:
with-param>
<
xsl:
with-param name="
content">
<
xsl:
apply-templates />
</
xsl:
with-param>
</
xsl:
call-template>
<
xsl:
if test="
ancestor::tei:biblStruct">
<
xsl:
text>
. </
xsl:
text>
</
xsl:
if>
</
xsl:
when>
<
xsl:
when test="
@level='u'">
<
xsl:
call-template name="
emphasize">
<
xsl:
with-param name="
class">
<
xsl:
text>
titleu</
xsl:
text>
</
xsl:
with-param>
<
xsl:
with-param name="
content">
<
xsl:
apply-templates />
</
xsl:
with-param>
</
xsl:
call-template>
<
xsl:
if test="
ancestor::tei:biblStruct">
<
xsl:
text>
. </
xsl:
text>
</
xsl:
if>
</
xsl:
when>
<
xsl:
otherwise>
<
xsl:
call-template name="
emphasize">
<
xsl:
with-param name="
class">
<
xsl:
text>
titleu</
xsl:
text>
</
xsl:
with-param>
<
xsl:
with-param name="
content">
<
xsl:
apply-templates />
</
xsl:
with-param>
</
xsl:
call-template>
</
xsl:
otherwise>
</
xsl:
choose>
</
xsl:
template>
<
xsl:
template match="
tei:idno[@type='url']">
<
xsl:
text>
<</
xsl:
text>
<
xsl:
call-template name="
makeExternalLink">
<
xsl:
with-param name="
ptr">
true</
xsl:
with-param>
<
xsl:
with-param name="
dest">
<
xsl:
value-of select="
normalize-space(.)" />
</
xsl:
with-param>
</
xsl:
call-template>
<
xsl:
text>
>.</
xsl:
text>
</
xsl:
template>
<
xsl:
template match="
tei:meeting">
<
xsl:
text>
(</
xsl:
text>
<
xsl:
apply-templates />
<
xsl:
text>
)</
xsl:
text>
<
xsl:
if test="
following-sibling::* and ancestor::tei:biblStruct">
<
xsl:
text>
</
xsl:
text>
</
xsl:
if>
</
xsl:
template>
<
xsl:
template match="
tei:series">
<
xsl:
apply-templates />
</
xsl:
template>
<
xsl:
template match="
tei:date">
<
xsl:
apply-templates />
<
xsl:
if test="
ancestor::tei:biblStruct">
<
xsl:
text>
. </
xsl:
text>
</
xsl:
if>
</
xsl:
template>
<
xsl:
template match="
tei:pubPlace">
<
xsl:
choose>
<
xsl:
when test="
@rendition">
<
span>
<
xsl:
call-template name="
applyRendition" />
<
xsl:
apply-templates />
</
span>
</
xsl:
when>
<
xsl:
otherwise>
<
xsl:
apply-templates />
</
xsl:
otherwise>
</
xsl:
choose>
<
xsl:
choose>
<
xsl:
when test="
ancestor::tei:bibl" />
<
xsl:
when test="
following-sibling::tei:pubPlace">
<
xsl:
text>
, </
xsl:
text>
</
xsl:
when>
<
xsl:
when test="
../tei:publisher">
<
xsl:
text>
: </
xsl:
text>
</
xsl:
when>
<
xsl:
otherwise>
<
xsl:
text>
. </
xsl:
text>
</
xsl:
otherwise>
</
xsl:
choose>
</
xsl:
template>
<
xsl:
template match="
tei:publisher">
<
xsl:
choose>
<
xsl:
when test="
@rendition">
<
span>
<
xsl:
call-template name="
applyRendition" />
<
xsl:
apply-templates />
</
span>
</
xsl:
when>
<
xsl:
otherwise>
<
xsl:
apply-templates />
</
xsl:
otherwise>
</
xsl:
choose>
<
xsl:
if test="
ancestor::tei:biblStruct">
<
xsl:
text>
. </
xsl:
text>
</
xsl:
if>
</
xsl:
template>
<!---->
<
xsl:
template match="
tei:biblScope">
<
xsl:
choose>
<
xsl:
when test="
ancestor::tei:bibl">
<
xsl:
apply-templates />
</
xsl:
when>
<
xsl:
when test="
@type='vol'">
<
xsl:
call-template name="
emphasize">
<
xsl:
with-param name="
class">
<
xsl:
text>
vol</
xsl:
text>
</
xsl:
with-param>
<
xsl:
with-param name="
content">
<
xsl:
apply-templates />
</
xsl:
with-param>
</
xsl:
call-template>
</
xsl:
when>
<
xsl:
when test="
@type='chap'">
<
xsl:
text>
chapter </
xsl:
text>
<
xsl:
apply-templates />
</
xsl:
when>
<
xsl:
when test="
@type='issue'">
<
xsl:
text>
(</
xsl:
text>
<
xsl:
apply-templates />
<
xsl:
text>
) </
xsl:
text>
</
xsl:
when>
<
xsl:
when test="
@type='pp'">
<
xsl:
choose>
<
xsl:
when test="
contains(.,'-')">
<
xsl:
text>
pp. </
xsl:
text>
</
xsl:
when>
<
xsl:
when test="
contains(.,'ff')">
<
xsl:
text>
pp. </
xsl:
text>
</
xsl:
when>
<
xsl:
when test="
contains(.,' ')">
<
xsl:
text>
pp. </
xsl:
text>
</
xsl:
when>
<
xsl:
otherwise>
<
xsl:
text>
p. </
xsl:
text>
</
xsl:
otherwise>
</
xsl:
choose>
<
xsl:
apply-templates />
</
xsl:
when>
<
xsl:
otherwise>
<
xsl:
apply-templates />
</
xsl:
otherwise>
</
xsl:
choose>
<
xsl:
choose>
<
xsl:
when test="
@type='vol' and following-sibling::tei:biblScope[@type='issue']">
<
xsl:
text>
</
xsl:
text>
</
xsl:
when>
<
xsl:
when test="
@type='vol' and following-sibling::tei:biblScope">
<
xsl:
text>
</
xsl:
text>
</
xsl:
when>
<
xsl:
when test="
following-sibling::tei:biblScope">
<
xsl:
text>
</
xsl:
text>
</
xsl:
when>
<
xsl:
when test="
ancestor::tei:biblStruct">
<
xsl:
text>
. </
xsl:
text>
</
xsl:
when>
</
xsl:
choose>
</
xsl:
template>
<
xsl:
template match="
tei:idno">
<
xsl:
text>
</
xsl:
text>
<
xsl:
apply-templates />
</
xsl:
template>
<
xsl:
template match="
tei:idno[@type='doi']" />
</
xsl:
stylesheet>
v