<
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 linking 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: linking.xsl 4801 2008-09-13 10:05:32Z rahtz $</
xd:
cvsId>
<
xd:
copyright>
2008, TEI Consortium</
xd:
copyright>
</
xd:
doc>
<
xd:
doc>
<
xd:
short>
Process elements tei:TEI</
xd:
short>
<
xd:
detail>
</
xd:
detail>
</
xd:
doc>
<
xsl:
template match="
tei:TEI"
mode="
xref">
<
xsl:
apply-templates select="
tei:teiHeader/tei:fileDesc/tei:titleStmt/tei:title[1]" />
</
xsl:
template>
<
xd:
doc>
<
xd:
short>
Process elements tei:anchor|tei:p in xref mode</
xd:
short>
<
xd:
detail>
</
xd:
detail>
</
xd:
doc>
<
xsl:
template match="
tei:anchor|tei:p"
mode="
xref">
<
xsl:
text>
here</
xsl:
text>
</
xsl:
template>
<
xd:
doc>
<
xd:
short>
Process elements tei:bibl</
xd:
short>
<
xd:
detail>
</
xd:
detail>
</
xd:
doc>
<
xsl:
template match="
tei:bibl"
mode="
xref">
<
xsl:
text>
[</
xsl:
text>
<
xsl:
number />
<
xsl:
text>
]</
xsl:
text>
</
xsl:
template>
<
xd:
doc>
<
xd:
short>
Process elements
tei:div|tei:div0|tei:div1|tei:div2|tei:div3|tei:div4|tei:div5|tei:div6 in
xref mode</
xd:
short>
<
xd:
param name="
minimal">
whether to make a link with just numbers or with
text too</
xd:
param>
<
xd:
detail>
</
xd:
detail>
</
xd:
doc>
<
xsl:
template match="
tei:div|tei:div0|tei:div1|tei:div2|tei:div3|tei:div4|tei:div5|tei:div6"
mode="
xref">
<
xsl:
param name="
minimal">
false</
xsl:
param>
<
xsl:
call-template name="
header">
<
xsl:
with-param name="
minimal"
select="
$minimal" />
<
xsl:
with-param name="
display">
plain</
xsl:
with-param>
</
xsl:
call-template>
</
xsl:
template>
<
xd:
doc>
<
xd:
short>
Process elements tei:note</
xd:
short>
<
xd:
detail>
</
xd:
detail>
</
xd:
doc>
<
xsl:
template match="
tei:note"
mode="
xref">
<
xsl:
number level="
any" />
</
xsl:
template>
<
xd:
doc>
<
xd:
short>
Process elements tei:ptr|tei:xptr in xref mode</
xd:
short>
<
xd:
detail>
</
xd:
detail>
</
xd:
doc>
<
xsl:
template match="
tei:ptr|tei:xptr">
<
xsl:
call-template name="
makeTEILink">
<
xsl:
with-param name="
ptr">
true</
xsl:
with-param>
</
xsl:
call-template>
</
xsl:
template>
<
xd:
doc>
<
xd:
short>
Process elements tei:ref|tei:xref</
xd:
short>
<
xd:
detail>
</
xd:
detail>
</
xd:
doc>
<
xsl:
template match="
tei:ref|tei:xref">
<
xsl:
call-template name="
makeTEILink">
<
xsl:
with-param name="
ptr">
false</
xsl:
with-param>
</
xsl:
call-template>
</
xsl:
template>
<
xd:
doc>
<
xd:
short>
[common] Making a heading for something</
xd:
short>
<
xd:
param name="
minimal">
whether to display headings</
xd:
param>
<
xd:
param name="
toc">
whether this is making a TOC entry</
xd:
param>
<
xd:
param name="
display">
detail of display (full, simple, plain), ie
whether markup is followed</
xd:
param>
<
xd:
detail>
</
xd:
detail>
</
xd:
doc>
<
xsl:
template name="
header">
<
xsl:
param name="
minimal">
false</
xsl:
param>
<
xsl:
param name="
toc" />
<
xsl:
param name="
display">
full</
xsl:
param>
<
xsl:
variable name="
depth">
<
xsl:
apply-templates mode="
depth"
select="
." />
</
xsl:
variable>
<
xsl:
call-template name="
formatHeadingNumber">
<
xsl:
with-param name="
toc">
<
xsl:
value-of select="
$toc" />
</
xsl:
with-param>
<
xsl:
with-param name="
text">
<
xsl:
choose>
<
xsl:
when test="
local-name(.) = 'TEI'" />
<
xsl:
when test="
local-name(.) = 'TEI.2'" />
<
xsl:
when test="
$depth > $numberHeadingsDepth">
</
xsl:
when>
<
xsl:
when test="
ancestor::tei:back">
<
xsl:
if test="
not($numberBackHeadings='')">
<
xsl:
call-template name="
i18n">
<
xsl:
with-param name="
word">
appendixWords</
xsl:
with-param>
</
xsl:
call-template>
<
xsl:
text>
</
xsl:
text>
<
xsl:
call-template name="
numberBackDiv" />
<
xsl:
if test="
$minimal='false'">
<
xsl:
value-of select="
$numberSpacer" />
</
xsl:
if>
</
xsl:
if>
</
xsl:
when>
<
xsl:
when test="
ancestor::tei:front">
<
xsl:
if test="
not($numberFrontHeadings='')">
<
xsl:
call-template name="
numberFrontDiv">
<
xsl:
with-param name="
minimal">
<
xsl:
value-of select="
$minimal" />
</
xsl:
with-param>
</
xsl:
call-template>
</
xsl:
if>
</
xsl:
when>
<
xsl:
when test="
$numberHeadings ='true'">
<
xsl:
choose>
<
xsl:
when test="
$prenumberedHeadings='true'">
<
xsl:
value-of select="
@n" />
</
xsl:
when>
<
xsl:
otherwise>
<
xsl:
call-template name="
numberBodyDiv" />
</
xsl:
otherwise>
</
xsl:
choose>
<
xsl:
if test="
$minimal='false'">
<
xsl:
value-of select="
$headingNumberSuffix" />
</
xsl:
if>
</
xsl:
when>
</
xsl:
choose>
</
xsl:
with-param>
</
xsl:
call-template>
<
xsl:
if test="
$minimal='false'">
<
xsl:
choose>
<
xsl:
when test="
local-name(.) = 'TEI' or local-name(.)='TEI.2'">
<
xsl:
apply-templates select="
tei:teiHeader/tei:fileDesc/tei:titleStmt/tei:title[1]" />
</
xsl:
when>
<
xsl:
when test="
not(tei:head) and @n">
<
xsl:
value-of select="
@n" />
</
xsl:
when>
<
xsl:
when test="
not($toc='')">
<
xsl:
call-template name="
makeInternalLink">
<
xsl:
with-param name="
dest">
<
xsl:
value-of select="
$toc" />
</
xsl:
with-param>
<
xsl:
with-param name="
class">
<
xsl:
value-of select="
$class_toc" />
<
xsl:
text>
</
xsl:
text>
<
xsl:
value-of select="
concat($class_toc,'_',$depth)" />
</
xsl:
with-param>
<
xsl:
with-param name="
body">
<
xsl:
choose>
<
xsl:
when test="
$autoHead='true'">
<
xsl:
call-template name="
autoMakeHead" />
</
xsl:
when>
<
xsl:
otherwise>
<
xsl:
for-each select="
tei:head">
<
xsl:
apply-templates mode="
plain" />
</
xsl:
for-each>
</
xsl:
otherwise>
</
xsl:
choose>
</
xsl:
with-param>
</
xsl:
call-template>
</
xsl:
when>
<
xsl:
when test="
$autoHead='true'">
<
xsl:
call-template name="
autoMakeHead" />
</
xsl:
when>
<
xsl:
when test="
$display='plain'">
<
xsl:
for-each select="
tei:head">
<
xsl:
apply-templates mode="
plain" />
</
xsl:
for-each>
</
xsl:
when>
<
xsl:
when test="
$display='simple'">
<
xsl:
for-each select="
tei:head">
<
xsl:
apply-templates mode="
plain" />
</
xsl:
for-each>
</
xsl:
when>
<
xsl:
otherwise>
<
xsl:
for-each select="
tei:head">
<
xsl:
apply-templates />
</
xsl:
for-each>
</
xsl:
otherwise>
</
xsl:
choose>
</
xsl:
if>
</
xsl:
template>
<
xd:
doc>
<
xd:
short>
[common] processing the number portion of a heading</
xd:
short>
<
xd:
param name="
text" />
<
xd:
detail>
By default, the text is printed as is. You may
wish to colour it, align it, etc</
xd:
detail>
</
xd:
doc>
<
xsl:
template name="
formatHeadingNumber">
<
xsl:
param name="
text" />
<
xsl:
param name="
toc" />
<
xsl:
copy-of select="
$text" />
</
xsl:
template>
<
xd:
doc>
<
xd:
short>
[common] Making a heading for something, and making sure it has
contents</
xd:
short>
<
xd:
param name="
minimal">
false</
xd:
param>
<
xd:
detail>
This is a wrapper around the "header" template which ensures that
some text is returned; if all else fails, the element name is
used.</
xd:
detail>
</
xd:
doc>
<
xsl:
template name="
headerLink">
<
xsl:
param name="
minimal">
false</
xsl:
param>
<
xsl:
variable name="
Text">
<
xsl:
call-template name="
header">
<
xsl:
with-param name="
minimal"
select="
$minimalCrossRef" />
<
xsl:
with-param name="
display">
plain</
xsl:
with-param>
</
xsl:
call-template>
</
xsl:
variable>
<
xsl:
choose>
<
xsl:
when test="
$Text=''">
<
xsl:
text>
<</
xsl:
text>
<
xsl:
value-of select="
local-name(.)" />
<
xsl:
text>
></
xsl:
text>
</
xsl:
when>
<
xsl:
otherwise>
<
xsl:
copy-of select="
$Text" />
</
xsl:
otherwise>
</
xsl:
choose>
</
xsl:
template>
<
xd:
doc>
<
xd:
short>
[common] Make a hypertext link</
xd:
short>
<
xd:
param name="
ptr">
ptr</
xd:
param>
<
xd:
detail>
<
p>
cross-referencing </
p>
</
xd:
detail>
</
xd:
doc>
<
xsl:
template name="
makeTEILink">
<
xsl:
param name="
ptr" />
<!---->
<
xsl:
choose>
<!---->
<
xsl:
when test="
@target and starts-with(@target,'#')">
<
xsl:
call-template name="
makeInternalLink">
<
xsl:
with-param name="
target"
select="
substring-after(@target,'#')" />
<
xsl:
with-param name="
ptr"
select="
$ptr" />
<
xsl:
with-param name="
dest">
<
xsl:
call-template name="
generateEndLink">
<
xsl:
with-param name="
where">
<
xsl:
value-of select="
substring-after(@target,'#')" />
</
xsl:
with-param>
</
xsl:
call-template>
</
xsl:
with-param>
</
xsl:
call-template>
</
xsl:
when>
<!---->
<
xsl:
when test="
@target and $teiP4Compat='true'">
<
xsl:
call-template name="
makeInternalLink">
<
xsl:
with-param name="
target"
select="
@target" />
<
xsl:
with-param name="
ptr"
select="
$ptr" />
<
xsl:
with-param name="
dest">
<
xsl:
call-template name="
generateEndLink">
<
xsl:
with-param name="
where">
<
xsl:
value-of select="
@target" />
</
xsl:
with-param>
</
xsl:
call-template>
</
xsl:
with-param>
</
xsl:
call-template>
</
xsl:
when>
<!---->
<
xsl:
when test="
@target">
<
xsl:
call-template name="
makeExternalLink">
<
xsl:
with-param name="
ptr"
select="
$ptr" />
<
xsl:
with-param name="
dest">
<
xsl:
value-of select="
@target" />
</
xsl:
with-param>
</
xsl:
call-template>
</
xsl:
when>
<!---->
<
xsl:
when test="
@url and starts-with(@url,'#')">
<
xsl:
call-template name="
makeInternalLink">
<
xsl:
with-param name="
target"
select="
substring-after(@url,'#')" />
<
xsl:
with-param name="
ptr"
select="
$ptr" />
<
xsl:
with-param name="
dest">
<
xsl:
call-template name="
generateEndLink">
<
xsl:
with-param name="
where">
<
xsl:
value-of select="
substring-after(@url,'#')" />
</
xsl:
with-param>
</
xsl:
call-template>
</
xsl:
with-param>
</
xsl:
call-template>
</
xsl:
when>
<!---->
<
xsl:
when test="
@url">
<
xsl:
call-template name="
makeExternalLink">
<
xsl:
with-param name="
ptr"
select="
$ptr" />
<
xsl:
with-param name="
dest">
<
xsl:
value-of select="
@url" />
</
xsl:
with-param>
</
xsl:
call-template>
</
xsl:
when>
<!---->
<
xsl:
when test="
@doc">
<
xsl:
call-template name="
makeExternalLink">
<
xsl:
with-param name="
ptr"
select="
$ptr" />
<
xsl:
with-param name="
dest">
<
xsl:
value-of select="
unparsed-entity-uri(@doc)" />
</
xsl:
with-param>
</
xsl:
call-template>
</
xsl:
when>
<
xsl:
otherwise>
<!---->
<
xsl:
apply-templates />
</
xsl:
otherwise>
</
xsl:
choose>
</
xsl:
template>
</
xsl:
stylesheet>
v