Statistics
| Revision:

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

History | View | Annotate | Download (14.2 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:param name="textcontainer">text</xsl:param>
13
	
14
	<!--<xsl:param name="frontmatter"></xsl:param>
15
	
16
	<xsl:param name="backmatter">back</xsl:param>-->
17
	
18
	<xsl:variable name="inputtype">
19
		<xsl:choose>
20
			<xsl:when test="//tei:w//txm:form">xmltxm</xsl:when>
21
			<xsl:otherwise>xmlw</xsl:otherwise>
22
		</xsl:choose>
23
	</xsl:variable>
24
	
25
	<xsl:template match="/">
26
		<html>
27
			<head>
28
				<title><xsl:value-of select="//tei:text[1]/@id"/></title>
29
				<meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>
30
			</head>
31
			<body>
32
				<a class="txm-page" title="1"/>
33
				<div class="metadata-page">
34
					<h1><xsl:value-of select="//tei:text[1]/@id"></xsl:value-of></h1>
35
					<br/>
36
					<table>
37
						<xsl:for-each select="//tei:text[1]/@*">
38
							<tr>
39
								<td><xsl:value-of select="name()"/></td>
40
								<td><xsl:value-of select="."/></td>
41
							</tr>
42
						</xsl:for-each>
43
					</table>
44
					<br/>
45
					<br/>
46
				</div>
47
				<xsl:apply-templates select="descendant::*[local-name()=$textcontainer]"/>
48
				
49
				
50
<!--				<xsl:if test="//tei:note[not(@place='inline') and not(matches(@type,'intern|auto')) and not(following::*[local-name()=$editionpagetag]) and preceding::*[local-name()=$editionpagetag]]">
51
					<br/>
52
					<br/>			
53
					<span class="footnotes">
54
					<xsl:for-each select="//tei:note[not(@place='inline') and not(matches(@type,'intern|auto')) and not(following::*[local-name()=$editionpagetag]) and preceding::*[local-name()=$editionpagetag]]">
55
						<xsl:variable name="note_count">
56
							<xsl:value-of select="count(preceding::tei:note[not(@place='inline') and not(matches(@type,'intern|auto'))]) + 1"/>
57
						</xsl:variable>
58
						<!-\-<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>-\->
59
						<span class="note">
60
							<span class="footnotenumber"><a href="#noteref_{$note_count}" name="note_{$note_count}"><xsl:value-of select="$note_count"/></a>. </span>
61
							<xsl:apply-templates mode="#current"/>
62
						</span>
63
					</xsl:for-each>
64
					</span>
65
					
66
				</xsl:if>
67
-->				
68
			</body>
69
		</html>
70
	</xsl:template>
71
	
72
	<xsl:template match="//*[local-name()=$textcontainer]">
73
		<xsl:variable name="pbcount"></xsl:variable>
74
		
75
		<div class="text" style="margin-left:60px;">
76
			<xsl:apply-templates/>
77
		</div>
78
	</xsl:template>
79
	
80
		
81
	
82
	<xsl:template match="*">
83
		<xsl:choose>
84
			<xsl:when test="descendant::tei:p|descendant::tei:ab">
85
				<div>
86
					<xsl:call-template name="addClass"/>
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:if test="self::tei:add[@del]">
93
					<xsl:attribute name="title"><xsl:value-of select="@del"/></xsl:attribute>
94
				</xsl:if>
95
				<xsl:apply-templates/></span>
96
				<!--<xsl:call-template name="spacing"/>-->
97
			</xsl:otherwise>
98
		</xsl:choose>
99
	</xsl:template>
100
	
101
	<xsl:template match="@*|processing-instruction()|comment()">
102
		<!--<xsl:copy/>-->
103
	</xsl:template>
104
	
105
	<!--                <xsl:template match="comment()">
106
                                <xsl:copy/>
107
                </xsl:template>
108
-->                
109
	<xsl:template match="text()">
110
		<xsl:value-of select="normalize-space(.)"/>
111
	</xsl:template>
112
	
113
	<xsl:template name="addClass">
114
		<xsl:attribute name="class">
115
			<xsl:value-of select="local-name(.)"/>
116
			<xsl:if test="@type"><xsl:value-of select="concat('-',@type)"/></xsl:if>
117
			<xsl:if test="@subtype"><xsl:value-of select="concat('-',@subtype)"/></xsl:if>
118
			<xsl:if test="@rend"><xsl:value-of select="concat('-',@rend)"/></xsl:if>
119
		</xsl:attribute>                	
120
	</xsl:template>
121
	
122
<!--	<xsl:template match="tei:p|tei:ab">
123
		<p>
124
			<xsl:call-template name="addClass"/>
125
			<xsl:apply-templates/>
126
		</p>
127
		<xsl:text>&#xa;</xsl:text>
128
	</xsl:template>-->
129
	
130
	<xsl:template match="//word">
131
		<xsl:choose>
132
			<xsl:when test="@line = preceding::word[1]/@line"><xsl:text> </xsl:text></xsl:when>
133
			<xsl:otherwise><br/><xsl:text>&#xa;</xsl:text><span style="position:relative"><span class="linenumber" style="position:absolute;width:40px;left:-50px;padding-right:20px;text-align:right"><xsl:value-of select="@line"/>&#xa0;</span></span></xsl:otherwise>
134
		</xsl:choose>
135
		<span>
136
			<xsl:call-template name="addClass"/>
137
			<xsl:apply-templates/>
138
		</span>
139
	</xsl:template>
140
	
141
	
142
	
143
	<!-- Page breaks -->                
144
	<xsl:template match="//*[local-name()=$editionpagetag]">
145
		<xsl:variable name="editionpagetype">
146
			<xsl:choose>
147
				<xsl:when test="ancestor::tei:ab">editionpageverse</xsl:when>
148
				<xsl:otherwise>editionpage</xsl:otherwise>
149
			</xsl:choose>
150
		</xsl:variable>
151
		<xsl:variable name="pagenumber">
152
			<xsl:choose>
153
				<xsl:when test="@n"><xsl:value-of select="@n"/></xsl:when>
154
				<xsl:when test="@facs"><xsl:value-of select="substring-before(@facs,'.')"/></xsl:when>
155
				<xsl:otherwise>[NN]</xsl:otherwise>
156
			</xsl:choose>
157
		</xsl:variable>
158
		
159
		<xsl:variable name="page_id"><xsl:value-of select="count(preceding::*[local-name()=$editionpagetag])"/></xsl:variable>
160
		<xsl:if test="@break='no'"><span class="hyphen">-</span></xsl:if>
161
		<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]]">
162
			<xsl:text>&#xa;</xsl:text>
163
			<br/>
164
			<br/>			
165
			<span class="footnotes">
166
				<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]]">
167
					<xsl:variable name="note_count"><xsl:value-of select="count(preceding::tei:note[not(@place='inline')]) + 1"/></xsl:variable>
168
					<!--<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>-->
169
					<span class="note">
170
						<span class="footnotenumber"><a href="#noteref_{$note_count}" name="note_{$note_count}"><xsl:value-of select="$note_count"/></a>. </span>
171
						<xsl:apply-templates mode="#current"/>
172
					</span>                                                                
173
				</xsl:for-each></span><xsl:text>&#xa;</xsl:text>                                                                
174
			
175
		</xsl:if>                                
176
		
177
		<xsl:text>&#xa;</xsl:text>
178
		<br/><xsl:text>&#xa;</xsl:text>
179
		<a class="txm-page" title="{count(preceding::*[local-name()=$editionpagetag]) + 2}"/>
180
		<span class="{$editionpagetype}"> - <xsl:value-of select="$pagenumber"/> - </span><br/><xsl:text>&#xa;</xsl:text>
181
	</xsl:template>
182
	
183
	<!-- Notes -->
184
<!--	<xsl:template match="tei:note[not(@place='inline') and not(matches(@type,'intern|auto'))]">
185
		<!-\-<span style="color:violet"> [<b>Note :</b> <xsl:apply-templates/>] </span>-\->	
186
		<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>
187
		<a title="{.}" class="noteref" href="#note_{$note_count}" name="noteref_{$note_count}">[<xsl:value-of select="$note_count"/>]</a>
188
		<xsl:call-template name="spacing"/>                                
189
	</xsl:template>
190
-->	
191
	
192
	<xsl:template match="//w"><span class="w" style="font-family:Santakku">
193
		<xsl:variable name="unicode-chars" as="element()">
194
			<unicode>
195
				<xsl:choose>
196
					<xsl:when test="contains(@ref-unicode,'&amp;')">
197
						<char><xsl:call-template name="hex2num"><xsl:with-param name="hex"><xsl:value-of select="substring-before(substring(@ref-unicode,4),'&amp;')"/></xsl:with-param></xsl:call-template></char>
198
						<char><xsl:call-template name="hex2num"><xsl:with-param name="hex"><xsl:value-of select="substring-after(@ref-unicode,'&amp;U+')"/></xsl:with-param></xsl:call-template></char>
199
					</xsl:when>
200
					<xsl:otherwise><char><xsl:call-template name="hex2num"><xsl:with-param name="hex"><xsl:value-of select="substring(@ref-unicode,4)"/></xsl:with-param></xsl:call-template></char></xsl:otherwise>
201
				</xsl:choose>
202
			</unicode>
203
		</xsl:variable>
204
		<xsl:if test="@id">
205
			<xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute>
206
		</xsl:if>
207
		<xsl:attribute name="title">
208
			<xsl:choose>
209
				<xsl:when test="descendant::txm:ana">
210
					<xsl:for-each select="descendant::txm:ana">
211
						<xsl:value-of select="concat(substring(@type,2),': ',.,' ; ')"/>				
212
					</xsl:for-each>
213
					<xsl:value-of select="concat('translit : ',descendant::txm:form)"/>
214
				</xsl:when>
215
				<xsl:otherwise>
216
					<xsl:for-each select="@*">
217
						<xsl:value-of select="concat(name(),': ',.,' ; ')"/>				
218
					</xsl:for-each>
219
					<xsl:value-of select="concat('translit : ',.)"/>
220
				</xsl:otherwise>
221
			</xsl:choose>
222

    
223
		</xsl:attribute>
224
		<xsl:choose>
225
			<xsl:when test="descendant::txm:form">
226
				<xsl:apply-templates select="txm:form"/>
227
			</xsl:when>
228
			<xsl:otherwise>
229
				<!--<xsl:value-of select="codepoints-to-string($unicode)"/>-->
230
				<xsl:for-each select="$unicode-chars/char">
231
					<xsl:value-of select="codepoints-to-string(.)"/>
232
				</xsl:for-each>
233
			</xsl:otherwise>
234
		</xsl:choose>
235
		
236
	</span>
237
		<!--<xsl:if test="following-sibling::tei:w"></xsl:if>-->
238
	</xsl:template>
239
	
240
	<xsl:template name="hex2num">
241
		<xsl:param name="hex"/>
242
		<xsl:param name="num" select="0"/>
243
		<xsl:param name="MSB" select="translate(substring($hex, 1, 1), 'abcdef', 'ABCDEF')"/>
244
		<xsl:param name="value" select="string-length(substring-before('0123456789ABCDEF', $MSB))"/>
245
		<xsl:param name="result" select="16 * $num + $value"/>
246
		<xsl:choose>
247
			<xsl:when test="string-length($hex) > 1">
248
				<xsl:call-template name="hex2num">
249
					<xsl:with-param name="hex" select="substring($hex, 2)"/>
250
					<xsl:with-param name="num" select="$result"/>
251
				</xsl:call-template>
252
			</xsl:when>
253
			<xsl:otherwise>
254
				<xsl:value-of select="$result"/>
255
			</xsl:otherwise>
256
		</xsl:choose>
257
	</xsl:template>
258
	
259
	
260
	                <xsl:template match="//txm:form">
261
	                	<xsl:variable name="unicode-chars" as="element()">
262
	                		<unicode>
263
	                			<xsl:choose>
264
	                				<xsl:when test="contains(following-sibling::txm:ana[@type='#ref-unicode'],'&amp;')">
265
	                					<char><xsl:call-template name="hex2num"><xsl:with-param name="hex"><xsl:value-of select="substring-before(substring(following-sibling::txm:ana[@type='#ref-unicode'],4),'&amp;')"/></xsl:with-param></xsl:call-template></char>
266
	                					<char><xsl:call-template name="hex2num"><xsl:with-param name="hex"><xsl:value-of select="substring-after(following-sibling::txm:ana[@type='#ref-unicode'],'&amp;U+')"/></xsl:with-param></xsl:call-template></char>
267
	                				</xsl:when>
268
	                				<xsl:otherwise><char><xsl:call-template name="hex2num"><xsl:with-param name="hex"><xsl:value-of select="substring(following-sibling::txm:ana[@type='#ref-unicode'],4)"/></xsl:with-param></xsl:call-template></char></xsl:otherwise>
269
	                			</xsl:choose>
270
	                		</unicode>
271
	                	</xsl:variable>
272
	                	<!--<xsl:variable name="unicode">
273
	                		<xsl:call-template name="hex2num"><xsl:with-param name="hex"><xsl:value-of select="ancestor::w/substring(child::txm:ana[@type='#ref-unicode'],4)"/></xsl:with-param></xsl:call-template>			
274
	                	</xsl:variable>-->
275
	                	
276
	                	<!--<xsl:value-of select="codepoints-to-string($unicode)"/>-->
277
	                	<xsl:for-each select="$unicode-chars/char">
278
	                		<xsl:value-of select="codepoints-to-string(.)"/>
279
	                		<!--<xsl:value-of select="."/>-->
280
	                	</xsl:for-each>
281
                </xsl:template>
282
                
283
<!--	<xsl:template name="spacing">
284
		<xsl:choose>
285
			<xsl:when test="$inputtype='xmltxm'">
286
				<xsl:call-template name="spacing-xmltxm"/>
287
			</xsl:when>
288
			<xsl:otherwise>
289
				<xsl:call-template name="spacing-xmlw"/>
290
			</xsl:otherwise>
291
		</xsl:choose>
292
	</xsl:template>
293

    
294
	<xsl:template name="spacing-xmlw">
295
		<xsl:choose>
296
			<xsl:when test="ancestor::tei:w"/>
297
			<xsl:when test="following::tei:w[1][matches(.,'^\s*[.,)\]]+\s*$')]"/>			
298
			<xsl:when test="matches(.,'^\s*[(\[]+$|\w(''|’)\s*$')"></xsl:when>
299
			<xsl:when test="position()=last() and (ancestor::tei:choice or ancestor::tei:supplied[not(@rend='multi_s')])"></xsl:when>
300
			<xsl:when test="following-sibling::*[1][self::tei:note]"></xsl:when>
301
			<xsl:when test="following::tei:w[1][matches(.,'^\s*[:;!?]+\s*$')]">
302
				<xsl:text>&#xa0;</xsl:text>
303
			</xsl:when>
304
			<xsl:otherwise>
305
				<xsl:text> </xsl:text>
306
			</xsl:otherwise>
307
		</xsl:choose>                
308
	</xsl:template>
309
	
310
	<xsl:template name="spacing-xmltxm">
311
		<xsl:choose>
312
			<xsl:when test="ancestor::tei:w"/>
313
			<xsl:when test="following::tei:w[1][matches(descendant::txm:form[1],'^[.,)\]]+$')]"/>			
314
			<xsl:when test="matches(descendant::txm:form[1],'^[(\[]+$|\w(''|’)$')"></xsl:when>
315
			<xsl:when test="position()=last() and (ancestor::tei:choice or ancestor::tei:supplied[not(@rend='multi_s')])"></xsl:when>
316
			<xsl:when test="following-sibling::*[1][self::tei:note]"></xsl:when>
317
			<xsl:when test="following::tei:w[1][matches(descendant::txm:form[1],'^[:;!?]+$')]">
318
				<xsl:text>&#xa0;</xsl:text>
319
			</xsl:when>
320
			<xsl:otherwise>
321
				<xsl:text> </xsl:text>
322
			</xsl:otherwise>
323
		</xsl:choose>                
324
	</xsl:template>-->
325
	
326
	
327
</xsl:stylesheet>