Statistics
| Revision:

root / tmp / org.txm.oriflamms.rcp / res / oriflamms-convert-actesroyaux-oriflammsxml.xsl @ 2398

History | View | Annotate | Download (10.9 kB)

1
<?xml version="1.0"?>
2
<xsl:stylesheet
3
	xmlns:edate="http://exslt.org/dates-and-times"
4
	xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
5
	xmlns:tei="http://www.tei-c.org/ns/1.0"
6
	xmlns:xd="http://www.pnp-software.com/XSLTdoc"
7
	xmlns:txm="http://textometrie.org/1.0"
8
	xmlns:xi="http://www.w3.org/2001/XInclude"
9
	xmlns:svg="http://www.w3.org/2000/svg"
10
	xmlns:math="http://www.w3.org/1998/Math/MathML"
11
	exclude-result-prefixes="tei edate xd txm xi svg math" version="2.0">
12

    
13
	<xsl:output method="xml" encoding="utf-8"
14
		omit-xml-declaration="no" indent="no" />
15

    
16
	<xd:doc type="stylesheet">
17
		<xd:short>
18
			Cette feuille permet de convertir les transcription des
19
			Chartes de Fontenay au format XML-TEI du projet Oriflamms.
20
		</xd:short>
21
		<xd:detail>
22
			This stylesheet is free software; you can redistribute it and/or
23
			modify it under the terms of the GNU Lesser General Public
24
			License as published by the Free Software Foundation; either
25
			version 3 of the License, or (at your option) any later version.
26

    
27
			This stylesheet is distributed in the hope that it will be useful,
28
			but WITHOUT ANY WARRANTY; without even the implied warranty of
29
			MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
30
			Lesser General Public License for more details.
31

    
32
			You should have received a copy of GNU Lesser Public License with
33
			this stylesheet. If not, see http://www.gnu.org/licenses/lgpl.html
34
		</xd:detail>
35
		<xd:author>Alexei Lavrentiev alexei.lavrentev@ens-lyon.fr</xd:author>
36
		<xd:copyright>2015, CNRS / ICAR (Équipe CACTUS)</xd:copyright>
37
	</xd:doc>
38

    
39
	<!--<xsl:strip-space elements="*"/> -->
40

    
41
	<xsl:param name="baseMsSiglum">
42
		A
43
	</xsl:param>
44

    
45
	<xsl:variable name="baseMsPattern">
46
		<xsl:value-of
47
			select="concat('^#?',$baseMsSiglum,'| #?',$baseMsSiglum)" />
48
	</xsl:variable>
49

    
50
	<xsl:template match="*|comment()">
51
		<!-- Copy the current node -->
52
		<xsl:copy>
53
			<!-- Including any attributes it has and any child nodes -->
54
			<xsl:apply-templates select="@*|node()" />
55
		</xsl:copy>
56
	</xsl:template>
57

    
58
	<xsl:template match="processing-instruction()" />
59

    
60
	<!-- On supprime les attributs par défaut de la DTD TEI -->
61

    
62
	<xsl:template match="@*">
63
		<xsl:choose>
64
			<xsl:when
65
				test="matches(name(.),'^(part|instant|anchored|full)$')" />
66
			<xsl:otherwise>
67
				<xsl:copy />
68
			</xsl:otherwise>
69
		</xsl:choose>
70
	</xsl:template>
71

    
72
	<xsl:template match="@facs">
73
		<xsl:attribute name="facs"><xsl:value-of
74
			select="replace(.,'\.tif$','.png','i')" /></xsl:attribute>
75
	</xsl:template>
76

    
77
	<xsl:template match="tei:teiHeader">
78
		<xsl:copy>
79
			<xsl:apply-templates select="@*" />
80
			<xsl:apply-templates />
81
		</xsl:copy>
82
	</xsl:template>
83

    
84

    
85
	<xsl:template match="tei:revisionDesc">
86
		<xsl:copy>
87
			<xsl:apply-templates select="@*" />
88
			<change xmlns="http://www.tei-c.org/ns/1.0" when="2007-01-01"
89
				who="#DS">Publication du document original</change>
90
			<!-- information récupérée à partir de /TEI/text[1]/front[1]/titlePage[1]/docDate[1] -->
91
			<change xmlns="http://www.tei-c.org/ns/1.0"
92
				when="{format-date(current-date(),'[Y]-[M01]-[D01]')}" who="#auto">Conversion
93
				automatique au format XML-TEI-Oriflamms</change>
94
			<xsl:apply-templates />
95
		</xsl:copy>
96
	</xsl:template>
97

    
98
	<xsl:template match="tei:encodingDesc">
99
		<xsl:copy>
100
			<xsl:apply-templates select="@*" />
101
			<xsl:apply-templates />
102
			<xsl:if test="not(//tei:prefixDef[@ident='ori'])">
103
				<listPrefixDef xmlns="http://www.tei-c.org/ns/1.0">
104
					<prefixDef xmlns="http://www.tei-c.org/ns/1.0"
105
						ident="ori" matchPattern="([a-z]+)"
106
						replacementPattern="oriflamms-annotation-scheme.xml#$1">
107
						<p>
108
							In the context of this project, private URIs with the prefix
109
							"ori" point to
110
							<gi>interp</gi>
111
							elements in the project's
112
							oriflamms-annotation-scheme.xml file.
113
						</p>
114
					</prefixDef>
115
				</listPrefixDef>
116
			</xsl:if>
117
		</xsl:copy>
118
	</xsl:template>
119

    
120
	<!-- On restructure le document pour avoir un TEI par charte -->
121

    
122
	<!-- TEI devient teiCorpus -->
123

    
124
	<xsl:template match="tei:TEI">
125
		<xsl:element name="teiCorpus"
126
			xmlns="http://www.tei-c.org/ns/1.0">
127
			<xsl:apply-templates select="@*" />
128
			<xsl:apply-templates />
129
		</xsl:element>
130
	</xsl:template>
131

    
132
	<!-- on supprime l'élément text de niveau 1 et travaille directement sur 
133
		le niveau 2 (l'élément group intermédiaire disparait) -->
134

    
135
	<!-- <xsl:template match="tei:TEI/tei:text"> <xsl:apply-templates select="descendant::tei:text"/> 
136
		</xsl:template> -->
137

    
138

    
139
	<xsl:template match="tei:text[descendant::tei:text]">
140

    
141
		<teiCorpus xmlns="http://www.tei-c.org/ns/1.0">
142
			<teiHeader xmlns="http://www.tei-c.org/ns/1.0">
143
				<fileDesc xmlns="http://www.tei-c.org/ns/1.0">
144
					<titleStmt xmlns="http://www.tei-c.org/ns/1.0">
145
						<title xmlns="http://www.tei-c.org/ns/1.0">
146
							<xsl:value-of select="tei:group[1]/tei:head[1]" />
147
						</title>
148
					</titleStmt>
149
					<publicationStmt
150
						xmlns="http://www.tei-c.org/ns/1.0">
151
						<p xmlns="http://www.tei-c.org/ns/1.0">See the header of the top level teiCorpus</p>
152
					</publicationStmt>
153
					<sourceDesc xmlns="http://www.tei-c.org/ns/1.0">
154
						<p xmlns="http://www.tei-c.org/ns/1.0">See the header of the top level teiCorpus</p>
155
					</sourceDesc>
156
				</fileDesc>
157
				<profileDesc xmlns="http://www.tei-c.org/ns/1.0">
158
					<!-- argument devient profileDesc/abstract -->
159
					<xsl:apply-templates
160
						select="descendant::tei:argument[1]" />
161
				</profileDesc>
162
			</teiHeader>
163
			<xsl:apply-templates />
164
		</teiCorpus>
165
	</xsl:template>
166

    
167
	<xsl:template
168
		match="tei:text[descendant::tei:text]/tei:front">
169
		<xsl:choose>
170
			<xsl:when test="descendant::tei:div">
171
				<TEI xmlns="http://www.tei-c.org/ns/1.0" ana="ori:align-no">
172
					<teiHeader xmlns="http://www.tei-c.org/ns/1.0">
173
						<fileDesc xmlns="http://www.tei-c.org/ns/1.0">
174
							<titleStmt xmlns="http://www.tei-c.org/ns/1.0">
175
								<title xmlns="http://www.tei-c.org/ns/1.0">
176
									<xsl:text>Introduction</xsl:text>
177
								</title>
178
							</titleStmt>
179
							<publicationStmt
180
								xmlns="http://www.tei-c.org/ns/1.0">
181
								<p xmlns="http://www.tei-c.org/ns/1.0">See the header of the top level teiCorpus</p>
182
							</publicationStmt>
183
							<sourceDesc xmlns="http://www.tei-c.org/ns/1.0">
184
								<p xmlns="http://www.tei-c.org/ns/1.0">See the header of the top level teiCorpus</p>
185
							</sourceDesc>
186
						</fileDesc>
187
					</teiHeader>
188
					<text xmlns="http://www.tei-c.org/ns/1.0">
189
						<body xmlns="http://www.tei-c.org/ns/1.0">
190
							<xsl:apply-templates
191
								select="descendant::tei:div" />
192
						</body>
193

    
194
					</text>
195
				</TEI>
196
			</xsl:when>
197
			<xsl:otherwise>
198
				<xsl:comment>
199
					<xsl:copy-of select="." />
200
				</xsl:comment>
201
			</xsl:otherwise>
202
		</xsl:choose>
203
	</xsl:template>
204

    
205
	<xsl:template
206
		match="tei:text//tei:text[not(descendant::tei:text)]">
207

    
208
		<TEI xmlns="http://www.tei-c.org/ns/1.0">
209
			<teiHeader xmlns="http://www.tei-c.org/ns/1.0">
210
				<fileDesc xmlns="http://www.tei-c.org/ns/1.0">
211
					<titleStmt xmlns="http://www.tei-c.org/ns/1.0">
212
						<title xmlns="http://www.tei-c.org/ns/1.0">
213
							<xsl:text>Acte </xsl:text>
214
							<xsl:value-of select="descendant::tei:head[1]"></xsl:value-of>
215
						</title>
216
					</titleStmt>
217
					<publicationStmt
218
						xmlns="http://www.tei-c.org/ns/1.0">
219
						<p xmlns="http://www.tei-c.org/ns/1.0">See the header of the top level teiCorpus</p>
220
					</publicationStmt>
221
					<!-- les éléments listWit et listBibl sont placés dans sourceDesc -->
222
					<sourceDesc xmlns="http://www.tei-c.org/ns/1.0">
223
						<xsl:copy-of select="descendant::tei:listWit" />
224
						<xsl:copy-of select="descendant::tei:listBibl[1]"></xsl:copy-of>
225
					</sourceDesc>
226
				</fileDesc>
227
				<profileDesc xmlns="http://www.tei-c.org/ns/1.0">
228
					<!-- docDate devient profileDesc/creation/date[@type='documentCreation'] -->
229
					<creation xmlns="http://www.tei-c.org/ns/1.0">
230
						<xsl:apply-templates
231
							select="descendant::tei:docDate/tei:date" />
232
					</creation>
233
					<!-- argument devient profileDesc/abstract -->
234
					<abstract xmlns="http://www.tei-c.org/ns/1.0">
235
						<xsl:apply-templates
236
							select="descendant::tei:argument/node()" />
237
					</abstract>
238
					<textClass xmlns="http://www.tei-c.org/ns/1.0">
239
						<keywords xmlns="http://www.tei-c.org/ns/1.0">
240
							<xsl:copy-of select="descendant::tei:term"></xsl:copy-of>
241
						</keywords>
242
					</textClass>
243
				</profileDesc>
244
			</teiHeader>
245
			<text xmlns="http://www.tei-c.org/ns/1.0">
246
				<xsl:if test="preceding-sibling::*[1][self::tei:milestone]">
247
					<xsl:copy-of
248
						select="preceding-sibling::tei:milestone[1]"></xsl:copy-of>
249
				</xsl:if>
250
				<xsl:apply-templates />
251
			</text>
252
		</TEI>
253
	</xsl:template>
254

    
255
	<xsl:template
256
		match="tei:text[not(descendant::tei:text)]/tei:front">
257
	</xsl:template>
258

    
259
	<xsl:template match="tei:argument" />
260

    
261

    
262

    
263
	<xsl:template match="tei:group">
264
		<xsl:apply-templates />
265
	</xsl:template>
266

    
267
	<xsl:template match="tei:milestone">
268
		<xsl:choose>
269
			<xsl:when test="parent::tei:group" />
270
			<xsl:otherwise>
271
				<xsl:copy-of select="." />
272
			</xsl:otherwise>
273
		</xsl:choose>
274
	</xsl:template>
275

    
276
	<xsl:template match="tei:group/tei:head" />
277

    
278
	<!-- on supprime listWit du corps du texte (cf. l'entête) -->
279
	<xsl:template match="tei:listWit" />
280

    
281
	<!-- on supprime les entêtes et pied de pages (non alignables) -->
282

    
283
	<xsl:template match="tei:fw">
284
		<xsl:comment>
285
			fw :
286
			<xsl:copy-of select="." />
287
		</xsl:comment>
288
	</xsl:template>
289

    
290
	<!-- on ajoute un attribut pour faciliter l'identification des segments 
291
		à ne pas aligner -->
292

    
293
	<xsl:template
294
		match="tei:choice/tei:expan|tei:choice/tei:corr|tei:supplied|tei:note">
295
		<xsl:copy>
296
			<xsl:apply-templates select="@*" />
297
			<xsl:attribute name="ana">ori:align-no</xsl:attribute>
298
			<xsl:apply-templates />
299
		</xsl:copy>
300
	</xsl:template>
301

    
302
	<xsl:template match="tei:pb">
303
		<xsl:variable name="facs">
304
			<xsl:value-of select="@facs" />
305
		</xsl:variable>
306
		<xsl:if
307
			test="//tei:zone[@xml:id=substring-after($facs,'#')] and not(preceding::tei:pb[@facs=$facs])">
308
			<milestone xmlns="http://www.tei-c.org/ns/1.0"
309
				unit="surface">
310
				<xsl:attribute name="facs">
311
          <xsl:value-of
312
					select="//tei:surface[tei:zone[@xml:id=substring-after($facs,'#')]][1]/tei:graphic/@url" />
313
        </xsl:attribute>
314
			</milestone>
315
		</xsl:if>
316
		<xsl:copy-of select="." />
317
	</xsl:template>
318

    
319

    
320
	<xsl:template
321
		match="text()[following-sibling::*[1][self::tei:milestone or self::tei:pb or self::tei:cb or self::tei:lb] and following-sibling::tei:lb[1][@break='no']]">
322
		<xsl:choose>
323
			<!-- patch d'espace blanc devant les sauts de ligne à l'intérieur de mots -->
324
			<xsl:when test="matches(.,'\s+$')">
325
				<xsl:value-of select="replace(.,'\s+$','')" />
326
			</xsl:when>
327
			<xsl:otherwise>
328
				<xsl:copy />
329
			</xsl:otherwise>
330
		</xsl:choose>
331
	</xsl:template>
332

    
333
</xsl:stylesheet>