Statistics
| Revision:

root / tmp / org.txm.core / res / org / txm / xml / xsl / txm-edition-xmltxm-textgrid.xsl @ 187

History | View | Annotate | Download (13.6 kB)

1
<?xml version="1.0"?>
2
<xsl:stylesheet xmlns:edate="http://exslt.org/dates-and-times"
3
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:tei="http://www.tei-c.org/ns/1.0" xmlns:txm="http://textometrie.org/1.0"
4
                exclude-result-prefixes="#all" version="2.0">
5
                
6
	<xsl:output method="xml" encoding="UTF-8" omit-xml-declaration="no" indent="no"  doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>
7
                
8
                <xsl:strip-space elements="*"/>
9
                
10
                <xsl:template match="/">
11
                	<html>
12
                		<head>
13
                			<title><xsl:value-of select="//tei:text[1]/@id"/></title>
14
                			<meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>
15
                			<link rel="stylesheet" media="all" type="text/css" href="css/txm-textgrid.css" />
16
                			<style type="text/css">
17
                				.verseline:before {
18
                				position:absolute;
19
                				left:-50px;
20
                				top:-14px;
21
                				width:25px;
22
                				text-align:right;
23
                				color:gray;
24
                				content:attr(title);
25
                				}
26
                				.editionpage {
27
                				page-break-before:always;                                
28
                				color:gray;
29
                				display:block;
30
                				text-align:center;
31
                				}
32
                				.editionpageverse {
33
                				position:relative;
34
                				left:-5%;
35
                				page-break-before:always;                                
36
                				color:gray;
37
                				display:block;
38
                				text-align:center;
39
                				}
40
                				.noteinline {
41
                				color:gray;                                
42
                				}
43
                				.head {
44
                				color:indigo;
45
                				font-weight:bold;
46
                				}
47
                				.speaker {
48
                				color:darkblue;
49
                				}
50
                			</style>
51
<!--                			<title>
52
                				<xsl:if test="$author[not(contains(.,'anonym'))]">
53
                					<xsl:value-of select="$author"/><xsl:text> : </xsl:text>
54
                				</xsl:if>
55
                				<xsl:value-of select="$title-normal"/>
56
                			</title>                                                                -->
57
                		</head>
58
                			<xsl:apply-templates select="descendant::tei:text"/>
59
                	</html>
60
                </xsl:template>
61

    
62
<xsl:template match="tei:text">
63
	<body>
64
		<a class="txm-page" title="1">&#xa0;</a>
65
		<div class="metadata-page">
66
			<h1><xsl:value-of select="@id"></xsl:value-of></h1>
67
			<br/>
68
			<table>
69
				<xsl:for-each select="@*">
70
					<tr>
71
						<td><xsl:value-of select="name()"/></td>
72
						<td><xsl:value-of select="."/></td>
73
					</tr>
74
				</xsl:for-each>
75
			</table>
76
		</div>
77
		<xsl:apply-templates/>		
78
	</body>
79
</xsl:template>
80

    
81
                <xsl:template match="*">
82
                                <xsl:choose>
83
                                	<xsl:when test="descendant::tei:p|descendant::tei:ab|descendant::tei:lg">
84
                                		<div>
85
                                			<xsl:call-template name="addClass"/>
86
                                			<xsl:call-template name="checkId"/>
87
                                			<xsl:apply-templates/></div>
88
                                		<xsl:text>&#xa;</xsl:text>
89
                                	</xsl:when>
90
                                	<xsl:otherwise><span>
91
                                		<xsl:call-template name="addClass"/>
92
                                		<xsl:call-template name="checkId"/>
93
<!--                                		<xsl:if test="self::tei:add[@del]">
94
                                			<xsl:attribute name="title"><xsl:value-of select="@del"/></xsl:attribute>
95
                                		</xsl:if>-->
96
                                		<xsl:apply-templates/></span>
97
                                	<xsl:call-template name="spacing-xmltxm"/>
98
                                	</xsl:otherwise>
99
                                </xsl:choose>
100
                </xsl:template>
101
                
102
                <xsl:template match="@*|processing-instruction()|comment()">
103
                                <!--<xsl:copy/>-->
104
                </xsl:template>
105
                
106
<!--                <xsl:template match="comment()">
107
                                <xsl:copy/>
108
                </xsl:template>
109
-->                
110
                <xsl:template match="text()">
111
                                <xsl:value-of select="."/>
112
                </xsl:template>
113
                
114
                <xsl:template name="addClass">
115
                	<xsl:attribute name="class">
116
                		<xsl:value-of select="local-name(.)"/>
117
                		<xsl:if test="@type"><xsl:value-of select="concat('-',@type)"/></xsl:if>
118
                		<xsl:if test="@subtype"><xsl:value-of select="concat('-',@subtype)"/></xsl:if>
119
                		<!--<xsl:if test="@rend"><xsl:value-of select="concat('-',@rend)"/></xsl:if>-->
120
                	</xsl:attribute>                	
121
                </xsl:template>
122
                
123
                <xsl:template name="checkId">
124
                	<xsl:if test="@xml:id">
125
                		<xsl:attribute name="id"><xsl:value-of select="@xml:id"/></xsl:attribute>
126
                	</xsl:if>
127
                	
128
                </xsl:template>
129
                <xsl:template match="tei:p|tei:ab|tei:lg">
130
                	<p>
131
                		<xsl:call-template name="addClass"/>
132
                		<xsl:call-template name="checkId"/>
133
                		<xsl:apply-templates/>
134
                	</p>
135
                	<xsl:text>&#xa;</xsl:text>
136
                </xsl:template>
137
	
138
	<xsl:template match="tei:l">
139
		<xsl:if test="preceding-sibling::*">
140
			<br/>
141
		</xsl:if>
142
		<span class="l"><xsl:apply-templates/></span>
143
	</xsl:template>
144
	
145
	<xsl:template match="tei:head">
146
		<xsl:variable name="level">
147
			<xsl:value-of select="count(ancestor::tei:div) + 1"/>
148
		</xsl:variable>
149
		<xsl:element name="h{$level}">
150
			<xsl:call-template name="addClass"/>
151
			<xsl:call-template name="checkId"/>
152
			<xsl:apply-templates/>			
153
		</xsl:element>
154
<!--		<h2>
155
			<xsl:call-template name="addClass"/>
156
			<xsl:apply-templates/>
157
		</h2>-->
158
	</xsl:template>
159
                
160
	<xsl:template match="//tei:lb">
161
		<xsl:variable name="lbcount">
162
			<xsl:choose>
163
				<xsl:when test="ancestor::tei:ab"><xsl:number from="tei:ab" level="any"/></xsl:when>
164
				<xsl:when test="ancestor::tei:p"><xsl:number from="tei:p" level="any"/></xsl:when>
165
				<xsl:otherwise>999</xsl:otherwise>
166
			</xsl:choose>
167
		</xsl:variable>
168
		<xsl:if test="not($lbcount=1) or preceding-sibling::node()[matches(.,'\S')]"><br/><xsl:text>&#xa;</xsl:text></xsl:if>
169
		<xsl:if test="@n and not(@rend='prose')">
170
			<xsl:choose>
171
				<xsl:when test="matches(@n,'^[0-9]*[05]$')">
172
					<a title="{@n}" class="verseline" style="position:relative">&#xa0;</a>
173
				</xsl:when>
174
				<xsl:when test="matches(@n,'[^0-9]')">
175
					<a title="{@n}" class="verseline" style="position:relative">&#xa0;</a>
176
				</xsl:when>
177
				<xsl:otherwise>
178
				</xsl:otherwise>
179
			</xsl:choose>
180
		</xsl:if>
181
	</xsl:template>
182
	
183
	<!-- Page breaks -->                
184
	<xsl:template match="//tei:pb[not(following-sibling::tei:cb)]">
185
		<xsl:variable name="editionpagetype">
186
			<xsl:choose>
187
				<xsl:when test="ancestor::tei:ab">editionpageverse</xsl:when>
188
				<xsl:otherwise>editionpage</xsl:otherwise>
189
			</xsl:choose>
190
		</xsl:variable>
191
		<xsl:variable name="pagenumber">
192
			<xsl:choose>
193
				<xsl:when test="@n"><xsl:value-of select="@n"/></xsl:when>
194
				<xsl:when test="@facs"><xsl:value-of select="substring-before(@facs,'.')"/></xsl:when>
195
				<xsl:otherwise>[NN]</xsl:otherwise>
196
			</xsl:choose>
197
		</xsl:variable>
198
		<xsl:variable name="page_id"><xsl:value-of select="count(preceding::tei:pb)"/></xsl:variable>
199
		<xsl:if test="//tei:ref[@type='noteAnchor'][following::tei:pb[1][count(preceding::tei:pb) = $page_id]]">
200
			<xsl:text>&#xa;</xsl:text>
201
			<br/>
202
			<br/>			
203
			<span style="display:block;border-top-style:solid;border-top-width:1px;border-top-color:gray;padding-top:5px">                                                
204
				<xsl:for-each select="//tei:ref[@type='noteAnchor'][following::tei:pb[1][count(preceding::tei:pb) = $page_id]]">
205
					<span class="footnote">
206
						<xsl:apply-templates mode="#current" select="id(substring-after(@target,'#'))"/>
207
					</span>                                                                
208
				</xsl:for-each></span><xsl:text>&#xa;</xsl:text>                                                                
209
			
210
			
211
		</xsl:if>
212
	<!--	<xsl:if test="//tei:note[not(@place='inline') and not(matches(@type,'intern|auto'))][following::tei:pb[1][count(preceding::tei:pb) = $page_id]]">
213
			<xsl:text>&#xa;</xsl:text>
214
			<br/>
215
			<br/>			
216
			<span style="display:block;border-top-style:solid;border-top-width:1px;border-top-color:gray;padding-top:5px">                                                
217
				<xsl:for-each select="//tei:note[not(@place='inline') and not(matches(@type,'intern|auto'))][following::tei:pb[1][count(preceding::tei:pb) = $page_id]]">
218
					<xsl:variable name="note_count"><xsl:value-of select="count(preceding::tei:note[not(@place='inline')]) + 1"/></xsl:variable>
219
					<!-\-<p><xsl:value-of select="$note_count"/>. <a href="#noteref_{$note_count}" name="note_{$note_count}">[<xsl:value-of select="preceding::tei:cb[1]/@xml:id"/>, l. <xsl:value-of select="preceding::tei:lb[1]/@n"/>]</a><xsl:text> </xsl:text> <xsl:value-of select="."/></p>-\->
220
					<span class="note">
221
						<span style="position:absolute;left:-30px"><a href="#noteref_{$note_count}" name="note_{$note_count}"><xsl:value-of select="$note_count"/></a>. </span>
222
						<xsl:apply-templates mode="#current"/>
223
					</span>                                                                
224
				</xsl:for-each></span><xsl:text>&#xa;</xsl:text>                                                                
225
			
226
		</xsl:if>-->                                
227
		
228
		<xsl:text>&#xa;</xsl:text>
229
		<br/><xsl:text>&#xa;</xsl:text>
230
		<a class="txm-page" title="{count(preceding::tei:pb) + 2}">&#xa0;</a>
231
		<span class="{$editionpagetype}"> - <xsl:value-of select="$pagenumber"/> - </span><br/><xsl:text>&#xa;</xsl:text>
232
	</xsl:template>
233
	
234
	<!-- Notes -->
235
	<xsl:template match="tei:ref[@type='noteAnchor']">
236
		<a title="{id(substring-after(@target,'#'))//txm:form}" style="font-size:75%;position:relative;top:-5px" href="{@target}"><xsl:value-of select="descendant::txm:form"/></a>
237
		<xsl:call-template name="spacing-xmltxm"/>                                
238
	</xsl:template>
239
	
240
                
241
                <xsl:template match="//tei:w"><span class="w">
242
                                                <xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute>
243
                                	<xsl:attribute name="title">
244
                                		<xsl:if test="ancestor::tei:corr">
245
                                			<xsl:value-of select="concat(' sic : ',descendant::txm:ana[@type='#sic'])"/>
246
                                		</xsl:if>
247
                                		<xsl:if test="ancestor::tei:reg">
248
                                			<xsl:value-of select="concat(' orig : ',descendant::txm:ana[@type='#orig'])"/>
249
                                		</xsl:if>
250
                                		<xsl:if test="descendant::txm:ana[matches(@type,'pos$')]">
251
                                			<xsl:for-each select="descendant::txm:ana[matches(@type,'pos$')]">
252
                                				<xsl:value-of select="concat(' ',substring-after(@type,'#'),' : ',.)"/>
253
                                			</xsl:for-each>
254
                                		</xsl:if>                                		
255
                                	</xsl:attribute>
256
                                                <!--<xsl:copy-of select="@*"/>-->
257
                                                <xsl:apply-templates select="txm:form"/>
258
                                </span><xsl:call-template name="spacing-xmltxm"></xsl:call-template></xsl:template>
259
                
260
                <xsl:template match="//txm:form">
261
                                <xsl:apply-templates/>
262
                </xsl:template>
263
                
264
                
265
                <xsl:template match="tei:sp[not(descendant::tei:speaker)]">
266
                	<div class="sp">
267
                		<span class="speaker"><xsl:value-of select="@who"></xsl:value-of></span>
268
                		<xsl:apply-templates/>
269
                	</div>
270
                </xsl:template>
271
	
272
	
273
	<xsl:template name="spacing-xmltxm">
274
		<xsl:choose>
275
			<xsl:when test="ancestor::tei:w"/>
276
			<xsl:when test="following::tei:w[1][matches(descendant::txm:form,'^[.,)\]]+$')]"/>			
277
			<xsl:when test="matches(descendant::txm:form[1],'^[(\[]+$|\w(''|’)$')"></xsl:when>
278
			<xsl:when test="position()=last() and (ancestor::tei:choice or ancestor::tei:supplied[not(@rend='multi_s')])"></xsl:when>
279
			<xsl:when test="following-sibling::*[1][self::tei:note]"></xsl:when>
280
			<xsl:when test="following::tei:w[1][matches(descendant::txm:form,'^[:;!?]+$')]">
281
				<xsl:text>&#xa0;</xsl:text>
282
			</xsl:when>
283
			<xsl:otherwise>
284
				<xsl:text> </xsl:text>
285
			</xsl:otherwise>
286
		</xsl:choose>                
287
	</xsl:template>
288
	
289
                
290
</xsl:stylesheet>