Statistics
| Revision:

root / tmp / org.txm.core / res / org / txm / xml / xsl / 1-default-html.xsl @ 187

History | View | Annotate | Download (16.1 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" 
4
	xmlns:tei="http://www.tei-c.org/ns/1.0" 
5
	xmlns:txm="http://textometrie.org/1.0"
6
	xmlns:xs="http://www.w3.org/2001/XMLSchema"
7
                exclude-result-prefixes="#all" version="2.0">
8
                
9
	<xsl:output method="xml" encoding="UTF-8" omit-xml-declaration="no" indent="no"/>
10
	
11
	<!-- <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"/> -->
12
	
13
                
14
                <xsl:strip-space elements="*"/>
15
                
16
	<xsl:param name="pagination-element">pb</xsl:param>
17
	
18
	<xsl:variable name="word-element">
19
		<xsl:choose>
20
			<xsl:when test="//tei:c//txm:form">c</xsl:when>
21
			<xsl:otherwise>w</xsl:otherwise>
22
		</xsl:choose>
23
	</xsl:variable>
24

    
25
	<xsl:variable name="page-number-adjust" as="xs:integer">
26
		<xsl:choose>
27
			<xsl:when test="//tei:c//txm:form">1</xsl:when>
28
			<xsl:otherwise>2</xsl:otherwise>
29
		</xsl:choose>
30
	</xsl:variable>
31
	
32

    
33
                <xsl:variable name="inputtype">
34
                	<xsl:choose>
35
                		<xsl:when test="//tei:w//txm:form">xmltxm</xsl:when>
36
                		<xsl:otherwise>xmlw</xsl:otherwise>
37
                	</xsl:choose>
38
                </xsl:variable>
39
	
40
	<xsl:variable name="filename">
41
		<xsl:analyze-string select="document-uri(.)" regex="^(.*)/([^/]+)\.[^/]+$">
42
			<xsl:matching-substring>
43
				<xsl:value-of select="regex-group(2)"/>
44
			</xsl:matching-substring>
45
		</xsl:analyze-string>
46
	</xsl:variable>
47
                
48
                <xsl:template match="/">
49
                	<html>
50
                		<head>
51
                			<title><xsl:choose>
52
                				<xsl:when test="//tei:text/@id"><xsl:value-of select="//tei:text[1]/@id"/></xsl:when>
53
                				<xsl:otherwise><xsl:value-of select="$filename"/></xsl:otherwise>
54
                			</xsl:choose></title>
55
                			<meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>
56
                			<link rel="stylesheet" media="all" type="text/css" href="css/txm.css" />
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
			<xsl:if test="$word-element='w'">
65
				<a class="txm-page" title="1"  next-word-id="w_0"/>
66
				<div class="metadata-page">
67
					<h1><xsl:value-of select="@id"></xsl:value-of></h1>
68
					<br/>
69
					<table>
70
						<xsl:for-each select="@*">
71
							<tr>
72
								<td><xsl:value-of select="name()"/></td>
73
								<td><xsl:value-of select="."/></td>
74
							</tr>
75
						</xsl:for-each>
76
					</table>
77
				</div>
78
				
79
			</xsl:if>
80
			<xsl:apply-templates/>		
81
		</body>
82
	</xsl:template>
83
	
84
                <xsl:template match="*">
85
                                <xsl:choose>
86
                                	<xsl:when test="descendant::tei:p|descendant::tei:ab">
87
                                		<div>
88
                                			<xsl:call-template name="addClass"/>
89
                                			<xsl:apply-templates/></div>
90
                                		<xsl:text>&#xa;</xsl:text>
91
                                	</xsl:when>
92
                                	<xsl:otherwise><span>
93
                                		<xsl:call-template name="addClass"/>
94
                                		<xsl:if test="self::tei:add[@del]">
95
                                			<xsl:attribute name="title"><xsl:value-of select="@del"/></xsl:attribute>
96
                                		</xsl:if>
97
                                		<xsl:apply-templates/></span>
98
                                	<xsl:call-template name="spacing"/>
99
                                	</xsl:otherwise>
100
                                </xsl:choose>
101
                </xsl:template>
102
                
103
                <xsl:template match="@*|processing-instruction()|comment()">
104
                                <!--<xsl:copy/>-->
105
                </xsl:template>
106
                
107
<!--                <xsl:template match="comment()">
108
                                <xsl:copy/>
109
                </xsl:template>
110
-->                
111
                <xsl:template match="text()">
112
                                <xsl:value-of select="normalize-space(.)"/>
113
                </xsl:template>
114
                
115
                <xsl:template name="addClass">
116
                	<xsl:attribute name="class">
117
                		<xsl:value-of select="local-name(.)"/>
118
                		<xsl:if test="@type"><xsl:value-of select="concat('-',@type)"/></xsl:if>
119
                		<xsl:if test="@subtype"><xsl:value-of select="concat('-',@subtype)"/></xsl:if>
120
                		<xsl:if test="@rend"><xsl:value-of select="concat('-',@rend)"/></xsl:if>
121
                	</xsl:attribute>                	
122
                </xsl:template>
123
                
124
                <xsl:template match="tei:p|tei:ab|tei:lg">
125
                	<p>
126
                		<xsl:call-template name="addClass"/>
127
                		<xsl:apply-templates/>
128
                	</p>
129
                	<xsl:text>&#xa;</xsl:text>
130
                </xsl:template>
131
	
132
	<xsl:template match="tei:head">
133
		<h2>
134
			<xsl:call-template name="addClass"/>
135
			<xsl:apply-templates/>
136
		</h2>
137
	</xsl:template>
138
	
139
	<xsl:template match="tei:gap">
140
		<span class="gap">
141
			<xsl:if test="@quantity and @unit">
142
				<xsl:attribute name="title"><xsl:value-of select="concat(@quantity,' ',@unit)"/></xsl:attribute>
143
			</xsl:if>
144
			<xsl:text>[...]</xsl:text>
145
		</span>
146
		<xsl:call-template name="spacing"/>
147
	</xsl:template>
148
                
149
	<xsl:template match="//tei:lb">
150
		<xsl:variable name="lbcount">
151
			<xsl:choose>
152
				<xsl:when test="ancestor::tei:ab"><xsl:number from="tei:ab" level="any"/></xsl:when>
153
				<xsl:when test="ancestor::tei:p"><xsl:number from="tei:p" level="any"/></xsl:when>
154
				<xsl:otherwise>999</xsl:otherwise>
155
			</xsl:choose>
156
		</xsl:variable>
157
		<xsl:if test="@rend='hyphen(-)'"><span class="hyphen">-</span></xsl:if>
158
		<xsl:if test="@rend='hyphen(=)'"><span class="hyphen">=</span></xsl:if>
159
		<xsl:if test="ancestor::tei:w and not(contains(@rend,'hyphen'))"><span class="hyphen-added">-</span></xsl:if>
160
		<xsl:if test="not($lbcount=1) or preceding-sibling::node()[matches(.,'\S')]"><br/><xsl:text>&#xa;</xsl:text></xsl:if>
161
		<xsl:if test="@n and not(@rend='prose')">
162
			<xsl:choose>
163
				<xsl:when test="matches(@n,'^[0-9]*[05]$')">
164
					<!--<a title="{@n}" class="verseline" style="position:relative"> </a>-->
165
					<!--<span class="verseline"><span class="verselinenumber"><xsl:value-of select="@n"/></span></span>-->
166
					<span class="verselinenumber"><xsl:value-of select="@n"/></span>
167
					
168
				</xsl:when>
169
				<xsl:when test="matches(@n,'[^0-9]')">
170
					<!--<a title="{@n}" class="verseline" style="position:relative"> </a>-->
171
					<!--<span class="verseline"><span class="verselinenumber"><xsl:value-of select="@n"/></span></span>-->
172
					<span class="verselinenumber"><xsl:value-of select="@n"/></span>
173
				</xsl:when>
174
				<xsl:otherwise>
175
				</xsl:otherwise>
176
			</xsl:choose>
177
		</xsl:if>
178
	</xsl:template>
179
	
180
	<!-- Page breaks -->                
181
	<xsl:template match="//*[local-name()=$pagination-element]">
182
		
183
		<xsl:variable name="next-word-position" as="xs:integer">
184
			<xsl:choose>
185
				<xsl:when test="following::*[local-name()=$word-element]">
186
					<xsl:value-of select="count(following::*[local-name()=$word-element][1]/preceding::*[local-name()=$word-element])"/>
187
				</xsl:when>
188
				<xsl:otherwise>0</xsl:otherwise>
189
			</xsl:choose>
190
		</xsl:variable>
191
		<xsl:variable name="next-pb-position" as="xs:integer">
192
			<xsl:choose>
193
				<xsl:when test="following::*[local-name()=$pagination-element]">
194
					<xsl:value-of select="count(following::*[local-name()=$pagination-element][1]/preceding::*[local-name()=$word-element])"/>
195
				</xsl:when>
196
				<xsl:otherwise>999999999</xsl:otherwise>
197
			</xsl:choose>
198
		</xsl:variable>
199
		<xsl:variable name="next-word-id">
200
			<xsl:choose>
201
				<xsl:when test="$next-pb-position - $next-word-position = 999999999">w_0</xsl:when>
202
				<xsl:when test="$next-pb-position &gt; $next-word-position"><xsl:value-of select="following::*[local-name()=$word-element][1]/@id"/></xsl:when>
203
				<xsl:otherwise>w_0</xsl:otherwise>
204
			</xsl:choose>
205
		</xsl:variable>
206
		
207
		
208
		<xsl:variable name="editionpagetype">
209
			<xsl:choose>
210
				<xsl:when test="ancestor::tei:ab">editionpageverse</xsl:when>
211
				<xsl:otherwise>editionpage</xsl:otherwise>
212
			</xsl:choose>
213
		</xsl:variable>
214
		<xsl:variable name="pagenumber">
215
			<xsl:choose>
216
				<xsl:when test="@n"><xsl:value-of select="@n"/></xsl:when>
217
				<xsl:when test="@facs"><xsl:value-of select="substring-before(@facs,'.')"/></xsl:when>
218
				<xsl:otherwise>[NN]</xsl:otherwise>
219
			</xsl:choose>
220
		</xsl:variable>
221
		
222
		<xsl:variable name="page_id"><xsl:value-of select="count(preceding::*[local-name()=$pagination-element])"/></xsl:variable>
223
		
224
		<xsl:if test="//tei:note[not(@place='inline') and not(matches(@type,'intern|auto'))][following::*[local-name()=$pagination-element][1][count(preceding::*[local-name()=$pagination-element]) = $page_id]]">
225
			<xsl:text>&#xa;</xsl:text>
226
			<br/>
227
			<br/>			
228
			<span style="display:block;border-top-style:solid;border-top-width:1px;border-top-color:gray;padding-top:5px">                                                
229
				<xsl:for-each select="//tei:note[not(@place='inline') and not(matches(@type,'intern|auto'))][following::*[local-name()=$pagination-element][1][count(preceding::*[local-name()=$pagination-element]) = $page_id]]">
230
					<xsl:variable name="note_count"><xsl:value-of select="count(preceding::tei:note[matches(@type,'^(apparat|identification|zoologique)$')]) + 1"/></xsl:variable>
231
					<!--<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>-->
232
					<span class="note">
233
						<span style="position:absolute;left:-30px"><a href="#noteref_{$note_count}" name="note_{$note_count}"><xsl:value-of select="$note_count"/></a>. </span>
234
						<xsl:apply-templates mode="#current"/>
235
					</span>                                                                
236
				</xsl:for-each></span><xsl:text>&#xa;</xsl:text>                                                                
237
			
238
		</xsl:if>
239
		
240
		
241
		<xsl:text>&#xa;</xsl:text>
242
		<br/><xsl:text>&#xa;</xsl:text>
243
		
244
			<a class="txm-page" title="{count(preceding::*[local-name()=$pagination-element]) + $page-number-adjust}" next-word-id="{$next-word-id}"/>
245
		
246
		<span class="{$editionpagetype}"> &lt;<xsl:value-of select="$pagenumber"/>&gt; </span><br/><xsl:text>&#xa;</xsl:text>
247
	</xsl:template>
248
	
249
	<!-- Notes -->
250
	<xsl:template match="tei:note">
251
		<!--<span style="color:violet"> [<b>Note :</b> <xsl:apply-templates/>] </span>-->	
252
		<xsl:variable name="note_count"><xsl:value-of select="count(preceding::tei:note[matches(@type,'^(apparat|identification|zoologique)$')]) + 1"/></xsl:variable>
253
		<xsl:variable name="note_content">
254
			<xsl:choose>
255
				<xsl:when test="descendant::txm:form">
256
					<xsl:for-each select="descendant::txm:form">						
257
						<xsl:value-of select="."/>
258
						<xsl:if test="not(matches(following::txm:form[1],'^[.,\)]')) and not(matches(.,'^\S+[''’]$|^[‘\(]$'))">
259
							<xsl:text> </xsl:text>
260
						</xsl:if>
261
					</xsl:for-each>
262
				</xsl:when>
263
				<xsl:otherwise><xsl:value-of select="normalize-space(.)"/></xsl:otherwise>
264
			</xsl:choose>
265
		</xsl:variable>
266
		<xsl:choose>
267
			<xsl:when test="matches(@type,'intern|auto')"></xsl:when>
268
			<xsl:when test="@place='inline'"><span class="note"> (Note : <xsl:value-of select="$note_content"/>)</span></xsl:when>
269
			<xsl:when test="not(@place='inline') and not(matches(@type,'intern|auto'))">
270
				<a title="{$note_content}" style="font-size:75%;position:relative;top:-5px" href="#note_{$note_count}" name="noteref_{$note_count}">[<xsl:value-of select="$note_count"/>]</a>
271
			</xsl:when>
272
			<xsl:otherwise><span class="noteref" title="{$note_content}">[•]</span></xsl:otherwise>
273
		</xsl:choose>
274
		<xsl:call-template name="spacing"/>                                
275
	</xsl:template>
276
	
277
	<xsl:template match="tei:bibl">
278
		<span class="noteref" title="{normalize-space(.)}">[•]</span>
279
	</xsl:template>
280
	
281
	<xsl:template match="a[@class='txmpageref']">
282
		<xsl:copy-of select="."/>
283
	</xsl:template>
284
	
285
	<!--<xsl:template match="tei:note[@place='inline']">
286
		<span class="noteinline">
287
			<xsl:apply-templates/>
288
		</span>
289
	</xsl:template>
290
   -->             
291
                <xsl:template match="//tei:w"><span class="w">
292
                	<xsl:choose>
293
                		<xsl:when test="descendant::tei:c//txm:form">
294
                			<xsl:apply-templates select="descendant::tei:c"/>
295
                		</xsl:when>
296
                		<xsl:otherwise>
297
                			<xsl:if test="@*:id">
298
                				<xsl:attribute name="id"><xsl:value-of select="@*:id"/></xsl:attribute>
299
                			</xsl:if>
300
                			<xsl:attribute name="title">
301
                				<xsl:for-each select="@*[not(matches(local-name(.),'id'))]">
302
                					<xsl:value-of select="concat(name(.),' : ',.,' ; ')"/>
303
                				</xsl:for-each>
304
                				<xsl:if test="descendant::txm:ana">	
305
                					<xsl:for-each select="descendant::txm:ana">
306
                						<xsl:value-of select="concat(substring-after(@type,'#'),' : ',.,' ; ')"/>
307
                					</xsl:for-each>
308
                				</xsl:if>
309
                			</xsl:attribute>
310
                			<xsl:choose>
311
                				<xsl:when test="descendant::txm:form">
312
                					<xsl:apply-templates select="txm:form"/>
313
                				</xsl:when>
314
                				<xsl:otherwise><xsl:apply-templates/></xsl:otherwise>
315
                			</xsl:choose>
316
                		</xsl:otherwise>
317
                	</xsl:choose>
318
                                </span><xsl:call-template name="spacing"/></xsl:template>
319
                
320
<!--                <xsl:template match="//txm:form">
321
                                <xsl:apply-templates/>
322
                </xsl:template>
323
-->                
324
	
325

    
326
	<xsl:template name="spacing">
327
		<xsl:choose>
328
			<xsl:when test="$inputtype='xmltxm'">
329
				<xsl:call-template name="spacing-xmltxm"/>
330
			</xsl:when>
331
			<xsl:otherwise>
332
				<xsl:call-template name="spacing-xmlw"/>
333
			</xsl:otherwise>
334
		</xsl:choose>
335
	</xsl:template>
336
	
337
	<xsl:template name="spacing-xmlw">
338
		<xsl:choose>
339
			<xsl:when test="ancestor::tei:w"/>
340
			<xsl:when test="following::tei:w[1][matches(.,'^\s*[.,)\]]+\s*$')]"/>			
341
			<xsl:when test="matches(.,'^\s*[(\[‘]+$|\w(''|’)\s*$')"></xsl:when>
342
			<xsl:when test="position()=last() and (ancestor::tei:choice or ancestor::tei:supplied[not(@rend='multi_s')])"></xsl:when>
343
			<xsl:when test="following-sibling::*[1][self::tei:note]"></xsl:when>
344
			<xsl:when test="following::tei:w[1][matches(.,'^\s*[:;!?]+\s*$')]">
345
				<xsl:text>&#xa0;</xsl:text>
346
			</xsl:when>
347
			<xsl:otherwise>
348
				<xsl:text> </xsl:text>
349
			</xsl:otherwise>
350
		</xsl:choose>                
351
	</xsl:template>
352

    
353
	<xsl:template name="spacing-xmltxm">
354
		<xsl:choose>
355
			<xsl:when test="ancestor::tei:w"/>
356
			<xsl:when test="following::tei:w[1][matches(descendant::txm:form[1],'^[.,)\]]+$')]"/>			
357
			<xsl:when test="matches(descendant::txm:form[1],'^[(\[‘]+$|\w(''|’)$')"></xsl:when>
358
			<xsl:when test="position()=last() and (ancestor::tei:choice or ancestor::tei:supplied[not(@rend='multi_s')])"></xsl:when>
359
			<xsl:when test="following-sibling::*[1][self::tei:note]"></xsl:when>
360
			<xsl:when test="following::tei:w[1][matches(descendant::txm:form[1],'^[:;!?]+$')]">
361
				<xsl:text>&#xa0;</xsl:text>
362
			</xsl:when>
363
			<xsl:otherwise>
364
				<xsl:text> </xsl:text>
365
			</xsl:otherwise>
366
		</xsl:choose>                
367
	</xsl:template>
368

    
369
                
370
</xsl:stylesheet>