Statistics
| Revision:

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

History | View | Annotate | Download (14.4 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:param name="editionpagetag">pb</xsl:param>
11
                
12
                <xsl:variable name="inputtype">
13
                	<xsl:choose>
14
                		<xsl:when test="//tei:w//txm:form">xmltxm</xsl:when>
15
                		<xsl:otherwise>xmlw</xsl:otherwise>
16
                	</xsl:choose>
17
                </xsl:variable>
18
	
19
	<xsl:variable name="filename">
20
		<xsl:analyze-string select="document-uri(.)" regex="^(.*)/([^/]+)\.[^/]+$">
21
			<xsl:matching-substring>
22
				<xsl:value-of select="regex-group(2)"/>
23
			</xsl:matching-substring>
24
		</xsl:analyze-string>
25
	</xsl:variable>
26
                
27
                <xsl:template match="/">
28
                	<html>
29
                		<head>
30
                			<title><xsl:choose>
31
                				<xsl:when test="//tei:text/@id"><xsl:value-of select="//tei:text[1]/@id"/></xsl:when>
32
                				<xsl:otherwise><xsl:value-of select="$filename"/></xsl:otherwise>
33
                			</xsl:choose></title>
34
                			<meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>
35
                			<link rel="stylesheet" media="all" type="text/css" href="css/bvhepistemon2014.css" />
36
<!--                			<title>
37
                				<xsl:if test="$author[not(contains(.,'anonym'))]">
38
                					<xsl:value-of select="$author"/><xsl:text> : </xsl:text>
39
                				</xsl:if>
40
                				<xsl:value-of select="$title-normal"/>
41
                			</title>                                                                -->
42
                		</head>
43
                			<xsl:apply-templates select="descendant::tei:text"/>
44
                	</html>
45
                </xsl:template>
46

    
47
<xsl:template match="tei:text">
48
	<body>
49
		<a class="txm-page" title="1"/>
50
		<div class="metadata-page">
51
			<h1><xsl:value-of select="@id"></xsl:value-of></h1>
52
			<br/>
53
			<table>
54
				<xsl:for-each select="@*">
55
					<tr>
56
						<td><xsl:value-of select="name()"/></td>
57
						<td><xsl:value-of select="."/></td>
58
					</tr>
59
				</xsl:for-each>
60
			</table>
61
		</div>
62
		<xsl:apply-templates/>		
63
	</body>
64
</xsl:template>
65

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

    
284
	<xsl:template name="spacing-xmltxm">
285
		<xsl:choose>
286
			<xsl:when test="ancestor::tei:w"/>
287
			<xsl:when test="following::tei:w[1][matches(descendant::txm:form[1],'^[.,)\]]+$')]"/>			
288
			<xsl:when test="matches(descendant::txm:form[1],'^[(\[‘]+$|\w(''|’)$')"></xsl:when>
289
			<xsl:when test="position()=last() and (ancestor::tei:choice or ancestor::tei:supplied[not(@rend='multi_s')])"></xsl:when>
290
			<xsl:when test="following-sibling::*[1][self::tei:note]"></xsl:when>
291
			<xsl:when test="following::tei:w[1][matches(descendant::txm:form[1],'^[:;!?]+$')]">
292
				<xsl:text>&#xa0;</xsl:text>
293
			</xsl:when>
294
			<xsl:otherwise>
295
				<xsl:text> </xsl:text>
296
			</xsl:otherwise>
297
		</xsl:choose>                
298
	</xsl:template>
299

    
300
                
301
</xsl:stylesheet>