Statistics
| Revision:

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

History | View | Annotate | Download (9.6 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 la transcription tokénisée 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:variable name="filename">
40
		<xsl:analyze-string select="document-uri(.)"
41
			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

    
49
	<xsl:strip-space elements="*" />
50
	<xsl:template match="/">
51
		<xsl:apply-templates />
52
	</xsl:template>
53

    
54

    
55
	<xsl:template match="*">
56
		<xsl:copy>
57
			<xsl:apply-templates select="@*" />
58
			<xsl:apply-templates
59
				select="*|processing-instruction()|comment()|text()" />
60
		</xsl:copy>
61
	</xsl:template>
62

    
63
	<xsl:template match="comment()|text()">
64
		<xsl:copy />
65
	</xsl:template>
66

    
67
	<xsl:template match="processing-instruction()" />
68

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

    
71
	<xsl:template match="@*">
72
		<xsl:choose>
73
			<xsl:when
74
				test="matches(name(.),'^(part|instant|anchored|full)$')" />
75
			<!-- <xsl:when test="matches(name(.),'rend')"> <xsl:choose> <xsl:when 
76
				test="matches(.,'^aggl$')"><xsl:attribute name="rend">space-after(none)</xsl:attribute></xsl:when> 
77
				<xsl:otherwise><xsl:copy/></xsl:otherwise> </xsl:choose> </xsl:when> -->
78
			<xsl:otherwise>
79
				<xsl:copy />
80
			</xsl:otherwise>
81
		</xsl:choose>
82
	</xsl:template>
83

    
84
	<xsl:template match="tei:teiHeader">
85
		<xsl:copy>
86
			<xsl:apply-templates select="@*" />
87
			<xsl:apply-templates />
88
		</xsl:copy>
89
	</xsl:template>
90

    
91

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

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

    
127
	<!-- On restructure le document pour avoir un TEI par charte -->
128

    
129
	<!-- TEI devient teiCorpus -->
130

    
131
	<xsl:template match="tei:TEI">
132
		<xsl:element name="teiCorpus"
133
			xmlns="http://www.tei-c.org/ns/1.0">
134
			<xsl:apply-templates select="@*" />
135
			<xsl:apply-templates select="tei:teiHeader" />
136
			<facsimile xmlns="http://www.tei-c.org/ns/1.0">
137
				<xsl:apply-templates select="tei:facsimile" />
138
			</facsimile>
139
			<xsl:apply-templates select="tei:text" />
140
		</xsl:element>
141
	</xsl:template>
142

    
143
	<xsl:template match="tei:facsimile">
144
		<xsl:apply-templates />
145
	</xsl:template>
146

    
147

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

    
151
	<xsl:template match="tei:TEI/tei:text">
152
		<xsl:apply-templates select="descendant::tei:text" />
153
	</xsl:template>
154

    
155
	<xsl:template
156
		match="tei:text//tei:text[descendant::*[matches(@facs,'\S')]]">
157

    
158
		<TEI xmlns="http://www.tei-c.org/ns/1.0">
159
			<teiHeader xmlns="http://www.tei-c.org/ns/1.0">
160
				<fileDesc xmlns="http://www.tei-c.org/ns/1.0">
161
					<titleStmt xmlns="http://www.tei-c.org/ns/1.0">
162
						<title xmlns="http://www.tei-c.org/ns/1.0">
163
							<xsl:text>Acte original </xsl:text>
164
							<xsl:value-of
165
								select="substring-after(preceding-sibling::comment()[contains(.,'acte original')][1],'acte original ')" />
166
						</title>
167
						<author xmlns="http://www.tei-c.org/ns/1.0">
168
							<xsl:value-of select="descendant::tei:docAuthor" />
169
						</author>
170
					</titleStmt>
171
					<publicationStmt
172
						xmlns="http://www.tei-c.org/ns/1.0">
173
						<p xmlns="http://www.tei-c.org/ns/1.0">See the header of the teiCorpus</p>
174
					</publicationStmt>
175
					<!-- les éléments listWit et listBibl sont placés dans sourceDesc -->
176
					<sourceDesc xmlns="http://www.tei-c.org/ns/1.0">
177
						<xsl:copy-of select="descendant::tei:listWit" />
178
						<xsl:copy-of select="descendant::tei:listBibl[1]"></xsl:copy-of>
179
					</sourceDesc>
180
				</fileDesc>
181
				<profileDesc xmlns="http://www.tei-c.org/ns/1.0">
182
					<!-- docDate devient profileDesc/creation/date[@type='documentCreation'] -->
183
					<creation xmlns="http://www.tei-c.org/ns/1.0">
184
						<xsl:apply-templates
185
							select="descendant::tei:docDate" />
186
					</creation>
187
					<!-- argument devient profileDesc/abstract -->
188
					<xsl:apply-templates
189
						select="descendant::tei:argument" />
190
				</profileDesc>
191
			</teiHeader>
192
			<text xmlns="http://www.tei-c.org/ns/1.0">
193
				<xsl:apply-templates select="@*" />
194
				<body xmlns="http://www.tei-c.org/ns/1.0">
195
					<xsl:variable name="facsID">
196
						<xsl:value-of
197
							select="replace(descendant::*[@facs[matches(.,'\S+')]][1]/@facs,'^#','')" />
198
					</xsl:variable>
199
					<xsl:if test="not(tei:body//tei:milestone[@unit='surface'])">
200
						<milestone xmlns="http://www.tei-c.org/ns/1.0"
201
							unit="surface">
202
							<xsl:attribute name="xml:id">
203
                <xsl:value-of
204
								select="concat('surf_',$filename,'_',replace(translate($facsID,' ()','_--'),'\.\w+$',''))" />
205
              </xsl:attribute>
206
							<xsl:attribute name="facs">
207
                <xsl:choose>
208
                  <xsl:when
209
								test="matches(descendant::*[@facs][1]/@facs,'^#')">
210
                    <xsl:value-of
211
								select="//tei:zone[@xml:id=$facsID]/preceding-sibling::tei:graphic[1]/@url" />
212
                  </xsl:when>
213
                  <xsl:otherwise><xsl:value-of
214
								select="$facsID" /></xsl:otherwise>
215
                </xsl:choose>
216
              </xsl:attribute>
217
						</milestone>
218
					</xsl:if>
219
					<xsl:if
220
						test="not(descendant::tei:pb[@facs]) and not(tei:body//tei:milestone[@unit='surface'])">
221
						<pb xmlns="http://www.tei-c.org/ns/1.0">
222
							<xsl:attribute name="facs">
223
              <xsl:choose>
224
                <xsl:when
225
								test="matches(descendant::*[@facs][1]/@facs,'^#')">
226
                  <xsl:value-of
227
								select="//tei:graphic[following-sibling::tei:zone[@xml:id=$facsID]]/@url" />
228
                  <!--<xsl:value-of select="$facsID"/>-->
229
                </xsl:when>
230
                <xsl:otherwise><xsl:value-of
231
								select="descendant::*[@facs][1]/@facs" /></xsl:otherwise>
232
              </xsl:choose>
233
            </xsl:attribute>
234
						</pb>
235
					</xsl:if>
236
					<xsl:apply-templates
237
						select="descendant::tei:div1" />
238
				</body>
239
			</text>
240
		</TEI>
241
	</xsl:template>
242

    
243
	<xsl:template
244
		match="tei:text//tei:text[not(descendant::*[@facs])]">
245
		<xsl:comment>
246
			No facs attribute provided for any element in this text (n="
247
			<xsl:value-of select="@n" />
248
			")!
249
		</xsl:comment>
250
		<xsl:comment>
251
			<xsl:copy-of select="." />
252
		</xsl:comment>
253
	</xsl:template>
254

    
255
	<xsl:template match="tei:docDate[ancestor::tei:group]">
256
		<date type="documentCreation" xmlns="http://www.tei-c.org/ns/1.0">
257
			<xsl:apply-templates select="@*" />
258
			<xsl:apply-templates />
259
		</date>
260
	</xsl:template>
261

    
262
	<xsl:template match="tei:argument">
263
		<abstract xmlns="http://www.tei-c.org/ns/1.0">
264
			<xsl:apply-templates />
265
		</abstract>
266
	</xsl:template>
267

    
268
	<!-- on ajoute un attribut pour faciliter l'identification des segments 
269
		à ne pas aligner -->
270

    
271
	<xsl:template
272
		match="tei:choice/tei:expan|tei:choice/tei:corr|tei:div1[@type='edition']">
273
		<xsl:copy>
274
			<xsl:apply-templates select="@*" />
275
			<xsl:attribute name="ana">ori:align-no</xsl:attribute>
276
			<xsl:apply-templates />
277
		</xsl:copy>
278
	</xsl:template>
279

    
280

    
281
</xsl:stylesheet>