Revision 2398 tmp/org.txm.oriflamms.rcp/res/txm-front-teioriflamms-xtz.xsl

txm-front-teioriflamms-xtz.xsl (revision 2398)
1 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"
4
  xmlns:me="http://www.menota.org/ns/1.0"
5
  xmlns:bfm="http://bfm.ens-lsh.fr/ns/1.0"
6
  xmlns:xd="http://www.pnp-software.com/XSLTdoc"
7
  exclude-result-prefixes="tei edate bfm me" version="2.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:me="http://www.menota.org/ns/1.0"
7
	xmlns:bfm="http://bfm.ens-lsh.fr/ns/1.0"
8
	xmlns:xd="http://www.pnp-software.com/XSLTdoc"
9
	exclude-result-prefixes="tei edate bfm me" version="2.0">
8 10

  
9
  <xsl:output method="xml" encoding="utf-8" omit-xml-declaration="no"/>
10
  
11
	<xsl:output method="xml" encoding="utf-8"
12
		omit-xml-declaration="no" />
11 13

  
12
  <xd:doc type="stylesheet">
13
    <xd:short>
14
      Cette feuille XSLT prépare les fichiers au format TEI Oriflamms
15
      (tokénisés par mot) à l'imppportation dans TXM avec le module XTZ
16
      (étape 2 "front").
17
    </xd:short>
18
    <xd:detail>
19
      This stylesheet is free software; you can redistribute it and/or
20
      modify it under the terms of the GNU Lesser General Public
21
      License as published by the Free Software Foundation; either
22
      version 3 of the License, or (at your option) any later version.
23
      
24
      This stylesheet is distributed in the hope that it will be useful,
25
      but WITHOUT ANY WARRANTY; without even the implied warranty of
26
      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
27
      Lesser General Public License for more details.
28
      
29
      You should have received a copy of GNU Lesser Public License with
30
      this stylesheet. If not, see http://www.gnu.org/licenses/lgpl.html
31
    </xd:detail>
32
    <xd:author>Alexei Lavrentiev alexei.lavrentev@ens-lyon.fr</xd:author>
33
    <xd:copyright>2016, CNRS / ICAR (Équipe CACTUS)</xd:copyright>
34
  </xd:doc>
35
  
36 14

  
37
  <xsl:template match="*" mode="#all">
38
    <xsl:copy>
39
      <xsl:apply-templates select="*|@*|processing-instruction()|comment()|text()" mode="#current"/>
40
    </xsl:copy>
41
  </xsl:template>
42
  
43
  <xsl:template match="comment()|processing-instruction()|text()|@*">
44
    <xsl:copy>
45
      <xsl:apply-templates/>
46
    </xsl:copy>
47
  </xsl:template>
48
  
49
  <xsl:template match="comment()|processing-instruction()|@*" mode="expan letters-all 
15
	<xd:doc type="stylesheet">
16
		<xd:short>
17
			Cette feuille XSLT prépare les fichiers au format TEI Oriflamms
18
			(tokénisés par mot) à l'imppportation dans TXM avec le module XTZ
19
			(étape 2 "front").
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>2016, CNRS / ICAR (Équipe CACTUS)</xd:copyright>
37
	</xd:doc>
38

  
39

  
40
	<xsl:template match="*" mode="#all">
41
		<xsl:copy>
42
			<xsl:apply-templates
43
				select="*|@*|processing-instruction()|comment()|text()"
44
				mode="#current" />
45
		</xsl:copy>
46
	</xsl:template>
47

  
48
	<xsl:template
49
		match="comment()|processing-instruction()|text()|@*">
50
		<xsl:copy>
51
			<xsl:apply-templates />
52
		</xsl:copy>
53
	</xsl:template>
54

  
55
	<xsl:template
56
		match="comment()|processing-instruction()|@*"
57
		mode="expan letters-all 
50 58
    letters-alignable characters-alignable">
51
    <xsl:copy>
52
      <xsl:apply-templates/>
53
    </xsl:copy>
54
  </xsl:template>
59
		<xsl:copy>
60
			<xsl:apply-templates />
61
		</xsl:copy>
62
	</xsl:template>
55 63

  
56
  <xsl:variable name="filename">
57
    <xsl:analyze-string select="document-uri(.)" regex="^(.*)/([^/]+)-w\.xml$">
58
      <xsl:matching-substring>
59
        <xsl:value-of select="regex-group(2)"/>
60
      </xsl:matching-substring>
61
    </xsl:analyze-string>
62
  </xsl:variable>
63
  
64
<xsl:template match="tei:teiCorpus">
65
  <TEI xmlns="http://www.tei-c.org/ns/1.0">
66
    <text>
67
      <!-- on ajoute des attributs utiles pour la création de partitions et de sous-corpus -->
68
      <xsl:apply-templates/>
69
    </text>
70
  </TEI>
71
</xsl:template>
64
	<xsl:variable name="filename">
65
		<xsl:analyze-string select="document-uri(.)"
66
			regex="^(.*)/([^/]+)-w\.xml$">
67
			<xsl:matching-substring>
68
				<xsl:value-of select="regex-group(2)" />
69
			</xsl:matching-substring>
70
		</xsl:analyze-string>
71
	</xsl:variable>
72 72

  
73
	<xsl:template match="tei:teiCorpus">
74
		<TEI xmlns="http://www.tei-c.org/ns/1.0">
75
			<text>
76
				<!-- on ajoute des attributs utiles pour la création de partitions et 
77
					de sous-corpus -->
78
				<xsl:apply-templates />
79
			</text>
80
		</TEI>
81
	</xsl:template>
73 82

  
74
<xsl:template match="tei:TEI[ancestor::tei:teiCorpus]">
75
<xsl:apply-templates/>
76
</xsl:template>
77
  
78
  <xsl:template match="tei:teiHeader">
79
    <!--<xsl:copy-of select="."/>-->
80
  </xsl:template>
81
  
82
  <xsl:template match="tei:text[not(ancestor::tei:teiCorpus)]">
83
    <xsl:element name="text" namespace="http://www.tei-c.org/ns/1.0">
84
      <!-- on ajoute des attributs utiles pour la création de partitions et de sous-corpus -->
85
      <xsl:apply-templates select="@*"/>
86
     <xsl:apply-templates/> 
87
    </xsl:element>
88
  </xsl:template>
89
  
90
  <xsl:template match="tei:text[ancestor::tei:teiCorpus]">
91
    <div type="text" id="{$filename}-{count(preceding::tei:text) + 1}" xmlns="http://www.tei-c.org/ns/1.0">
92
      <xsl:apply-templates select="@*|node()"/>
93
    </div>
94
  </xsl:template>
95 83

  
96
<xsl:template match="tei:w[not(tei:seg[@type='wp'])]">
97
  <xsl:element name="w" namespace="http://www.tei-c.org/ns/1.0">
98
    <xsl:apply-templates select="@*"/>
99
    <xsl:attribute name="expan"><xsl:apply-templates mode="expan"/></xsl:attribute>
100
    <xsl:attribute name="letters-all"><xsl:apply-templates mode="letters-all"/></xsl:attribute>
101
    <xsl:attribute name="letters-alignable"><xsl:apply-templates mode="letters-alignable"/></xsl:attribute>
102
    <xsl:attribute name="characters"><xsl:apply-templates mode="characters-alignable"/></xsl:attribute>
103
    <xsl:attribute name="abbr-n">
104
      <xsl:value-of select="count(descendant::tei:abbr)"/>
84
	<xsl:template match="tei:TEI[ancestor::tei:teiCorpus]">
85
		<xsl:apply-templates />
86
	</xsl:template>
87

  
88
	<xsl:template match="tei:teiHeader">
89
		<!--<xsl:copy-of select="."/> -->
90
	</xsl:template>
91

  
92
	<xsl:template
93
		match="tei:text[not(ancestor::tei:teiCorpus)]">
94
		<xsl:element name="text"
95
			namespace="http://www.tei-c.org/ns/1.0">
96
			<!-- on ajoute des attributs utiles pour la création de partitions et 
97
				de sous-corpus -->
98
			<xsl:apply-templates select="@*" />
99
			<xsl:apply-templates />
100
		</xsl:element>
101
	</xsl:template>
102

  
103
	<xsl:template match="tei:text[ancestor::tei:teiCorpus]">
104
		<div type="text" id="{$filename}-{count(preceding::tei:text) + 1}"
105
			xmlns="http://www.tei-c.org/ns/1.0">
106
			<xsl:apply-templates select="@*|node()" />
107
		</div>
108
	</xsl:template>
109

  
110
	<xsl:template match="tei:w[not(tei:seg[@type='wp'])]">
111
		<xsl:element name="w"
112
			namespace="http://www.tei-c.org/ns/1.0">
113
			<xsl:apply-templates select="@*" />
114
			<xsl:attribute name="expan"><xsl:apply-templates
115
				mode="expan" /></xsl:attribute>
116
			<xsl:attribute name="letters-all"><xsl:apply-templates
117
				mode="letters-all" /></xsl:attribute>
118
			<xsl:attribute name="letters-alignable"><xsl:apply-templates
119
				mode="letters-alignable" /></xsl:attribute>
120
			<xsl:attribute name="characters"><xsl:apply-templates
121
				mode="characters-alignable" /></xsl:attribute>
122
			<xsl:attribute name="abbr-n">
123
      <xsl:value-of select="count(descendant::tei:abbr)" />
105 124
    </xsl:attribute>
106
    <xsl:attribute name="ref"><xsl:value-of select="concat($filename,', p. ',preceding::tei:pb[1]/@n,', col. ',preceding::tei:cb[1]/@n,', l. ',preceding::tei:lb[1]/@n)"/></xsl:attribute>
107
    <xsl:apply-templates/>
108
  </xsl:element>
109
</xsl:template>
110
  
111
  <xsl:template match="tei:w[tei:seg[@type='wp']]">
112
    <xsl:element name="w-lb" namespace="http://www.tei-c.org/ns/1.0">
113
      <xsl:apply-templates select="@*"/>
114
      <xsl:attribute name="expan"><xsl:apply-templates mode="expan"/></xsl:attribute>
115
      <xsl:attribute name="letters-all"><xsl:apply-templates mode="letters-all"/></xsl:attribute>
116
      <xsl:attribute name="letters-alignable"><xsl:apply-templates mode="letters-alignable"/></xsl:attribute>
117
      <xsl:attribute name="characters"><xsl:apply-templates mode="characters-alignable"/></xsl:attribute>
118
      <xsl:attribute name="abbr-n">
119
        <xsl:value-of select="count(descendant::tei:abbr)"/>
125
			<xsl:attribute name="ref"><xsl:value-of
126
				select="concat($filename,', p. ',preceding::tei:pb[1]/@n,', col. ',preceding::tei:cb[1]/@n,', l. ',preceding::tei:lb[1]/@n)" /></xsl:attribute>
127
			<xsl:apply-templates />
128
		</xsl:element>
129
	</xsl:template>
130

  
131
	<xsl:template match="tei:w[tei:seg[@type='wp']]">
132
		<xsl:element name="w-lb"
133
			namespace="http://www.tei-c.org/ns/1.0">
134
			<xsl:apply-templates select="@*" />
135
			<xsl:attribute name="expan"><xsl:apply-templates
136
				mode="expan" /></xsl:attribute>
137
			<xsl:attribute name="letters-all"><xsl:apply-templates
138
				mode="letters-all" /></xsl:attribute>
139
			<xsl:attribute name="letters-alignable"><xsl:apply-templates
140
				mode="letters-alignable" /></xsl:attribute>
141
			<xsl:attribute name="characters"><xsl:apply-templates
142
				mode="characters-alignable" /></xsl:attribute>
143
			<xsl:attribute name="abbr-n">
144
        <xsl:value-of select="count(descendant::tei:abbr)" />
120 145
      </xsl:attribute>
121
      <xsl:attribute name="ref"><xsl:value-of select="concat($filename,', p. ',preceding::tei:pb[1]/@n,', col. ',preceding::tei:cb[1]/@n,', l. ',preceding::tei:lb[1]/@n)"/></xsl:attribute>
122
      <xsl:apply-templates/>
123
    </xsl:element>
124
  </xsl:template>
125
  
126
  <xsl:template match="tei:seg[@type='wp']">
127
    <xsl:element name="w" namespace="http://www.tei-c.org/ns/1.0">
128
      <xsl:apply-templates select="@*"/>
129
      <xsl:attribute name="expan"><xsl:apply-templates mode="expan"/></xsl:attribute>
130
      <xsl:attribute name="letters-all"><xsl:apply-templates mode="letters-all"/></xsl:attribute>
131
      <xsl:attribute name="letters-alignable"><xsl:apply-templates mode="letters-alignable"/></xsl:attribute>
132
      <xsl:attribute name="characters"><xsl:apply-templates mode="characters-alignable"/></xsl:attribute>
133
      <xsl:attribute name="abbr-n">
134
        <xsl:value-of select="count(descendant::tei:abbr)"/>
146
			<xsl:attribute name="ref"><xsl:value-of
147
				select="concat($filename,', p. ',preceding::tei:pb[1]/@n,', col. ',preceding::tei:cb[1]/@n,', l. ',preceding::tei:lb[1]/@n)" /></xsl:attribute>
148
			<xsl:apply-templates />
149
		</xsl:element>
150
	</xsl:template>
151

  
152
	<xsl:template match="tei:seg[@type='wp']">
153
		<xsl:element name="w"
154
			namespace="http://www.tei-c.org/ns/1.0">
155
			<xsl:apply-templates select="@*" />
156
			<xsl:attribute name="expan"><xsl:apply-templates
157
				mode="expan" /></xsl:attribute>
158
			<xsl:attribute name="letters-all"><xsl:apply-templates
159
				mode="letters-all" /></xsl:attribute>
160
			<xsl:attribute name="letters-alignable"><xsl:apply-templates
161
				mode="letters-alignable" /></xsl:attribute>
162
			<xsl:attribute name="characters"><xsl:apply-templates
163
				mode="characters-alignable" /></xsl:attribute>
164
			<xsl:attribute name="abbr-n">
165
        <xsl:value-of select="count(descendant::tei:abbr)" />
135 166
      </xsl:attribute>
136
      <xsl:attribute name="ref"><xsl:value-of select="concat($filename,', p. ',preceding::tei:pb[1]/@n,', col. ',preceding::tei:cb[1]/@n,', l. ',preceding::tei:lb[1]/@n)"/></xsl:attribute>
137
      <xsl:apply-templates/>
138
    </xsl:element>
139
  </xsl:template>
140
  
141
  <xsl:template match="tei:pc[not(child::tei:reg or @ana='ori:align-no')]">
142
    <xsl:element name="w" namespace="http://www.tei-c.org/ns/1.0">
143
      <xsl:apply-templates select="@*"/>
144
      <xsl:attribute name="type">pc</xsl:attribute>
145
      <xsl:attribute name="expan"><xsl:apply-templates/></xsl:attribute>
146
      <xsl:attribute name="letters-all"/>
147
      <xsl:attribute name="letters-alignable"/>
148
      <xsl:attribute name="characters"><xsl:apply-templates mode="characters-alignable"/></xsl:attribute>
149
      <xsl:attribute name="abbr-n">
150
        <xsl:value-of select="0"/>
167
			<xsl:attribute name="ref"><xsl:value-of
168
				select="concat($filename,', p. ',preceding::tei:pb[1]/@n,', col. ',preceding::tei:cb[1]/@n,', l. ',preceding::tei:lb[1]/@n)" /></xsl:attribute>
169
			<xsl:apply-templates />
170
		</xsl:element>
171
	</xsl:template>
172

  
173
	<xsl:template
174
		match="tei:pc[not(child::tei:reg or @ana='ori:align-no')]">
175
		<xsl:element name="w"
176
			namespace="http://www.tei-c.org/ns/1.0">
177
			<xsl:apply-templates select="@*" />
178
			<xsl:attribute name="type">pc</xsl:attribute>
179
			<xsl:attribute name="expan"><xsl:apply-templates /></xsl:attribute>
180
			<xsl:attribute name="letters-all" />
181
			<xsl:attribute name="letters-alignable" />
182
			<xsl:attribute name="characters"><xsl:apply-templates
183
				mode="characters-alignable" /></xsl:attribute>
184
			<xsl:attribute name="abbr-n">
185
        <xsl:value-of select="0" />
151 186
      </xsl:attribute>
152
      <xsl:attribute name="ref"><xsl:value-of select="concat($filename,', p. ',preceding::tei:pb[1]/@n,', col. ',preceding::tei:cb[1]/@n,', l. ',preceding::tei:lb[1]/@n)"/></xsl:attribute>
153
      <xsl:apply-templates/>
154
    </xsl:element>
155
  </xsl:template>
156
  
157
  <xsl:template match="tei:pc[child::tei:reg or @ana='ori:align-no']">
158
    <xsl:comment><xsl:copy-of select="."/></xsl:comment>
159
  </xsl:template>
187
			<xsl:attribute name="ref"><xsl:value-of
188
				select="concat($filename,', p. ',preceding::tei:pb[1]/@n,', col. ',preceding::tei:cb[1]/@n,', l. ',preceding::tei:lb[1]/@n)" /></xsl:attribute>
189
			<xsl:apply-templates />
190
		</xsl:element>
191
	</xsl:template>
160 192

  
161
  <xsl:template match="tei:choice[tei:abbr]">
162
    <xsl:apply-templates select="tei:abbr"/>
163
  </xsl:template>
164
  
165
  <xsl:template match="tei:choice[tei:abbr]" mode="expan">
166
    <xsl:apply-templates select="tei:expan" mode="#current"/>
167
  </xsl:template>
168
  
169
  <xsl:template match="tei:choice[tei:abbr]" mode="letters-all">
170
    <xsl:apply-templates select="tei:expan" mode="#current"/>
171
  </xsl:template>
172
  
173
  <xsl:template match="tei:choice[tei:abbr]" mode="letters-alignable">
174
    <xsl:apply-templates select="tei:expan" mode="#current"/>
175
  </xsl:template>
193
	<xsl:template
194
		match="tei:pc[child::tei:reg or @ana='ori:align-no']">
195
		<xsl:comment>
196
			<xsl:copy-of select="." />
197
		</xsl:comment>
198
	</xsl:template>
176 199

  
177
  <xsl:template match="tei:choice[tei:abbr]" mode="characters-alignable">
178
    <xsl:apply-templates select="tei:abbr" mode="#current"/>
179
  </xsl:template>
180
  
181
  <xsl:template match="tei:choice[tei:orig]" mode="#all">
182
    <xsl:apply-templates select="tei:orig" mode="#current"/>
183
  </xsl:template>
184
  
185
  <xsl:template match="tei:reg" mode="#all"></xsl:template>
186
  
187
  <xsl:template match="tei:orig" mode="#all">
188
    <xsl:apply-templates mode="#current"/>
189
  </xsl:template>
190
  
191
  <xsl:template match="tei:ex" mode="expan">
192
    <xsl:text>(</xsl:text>
193
    <xsl:value-of select="."/>
194
    <xsl:text>)</xsl:text>
195
  </xsl:template>
196
  
197
  <xsl:template match="tei:ex" mode="letters-all">
198
    <xsl:value-of select="."/>
199
  </xsl:template>
200
  
201
  <xsl:template match="tei:ex" mode="letters-alignable"/>
202
  
203
  <xsl:template match="tei:ex" mode="characters-alignable">
204
    <xsl:choose>
205
      <xsl:when test="matches(.,'^(cum|com|con)$','i')">&#xA76F;</xsl:when>
206
      <xsl:when test="matches(.,'^et$','i')">&#x204A;</xsl:when>
207
      <xsl:when test="matches(.,'^est$','i')">&#x223B;</xsl:when>
208
      <xsl:when test="matches(.,'^us$','i')">&#xA770;</xsl:when>
209
      <xsl:otherwise/>
210
    </xsl:choose>
211
  </xsl:template>
212
  
213
  <xsl:template match="tei:supplied"></xsl:template>
214
  
215
  
200
	<xsl:template match="tei:choice[tei:abbr]">
201
		<xsl:apply-templates select="tei:abbr" />
202
	</xsl:template>
216 203

  
204
	<xsl:template match="tei:choice[tei:abbr]" mode="expan">
205
		<xsl:apply-templates select="tei:expan"
206
			mode="#current" />
207
	</xsl:template>
217 208

  
218
<xsl:template match="tei:w//text()" mode="letters-alignable characters-alignable">
219
  <xsl:analyze-string select="." regex="\p{{M}}">
220
    <xsl:matching-substring/>
221
    <xsl:non-matching-substring><xsl:value-of select="."/></xsl:non-matching-substring>
222
  </xsl:analyze-string>
223
</xsl:template>
209
	<xsl:template match="tei:choice[tei:abbr]"
210
		mode="letters-all">
211
		<xsl:apply-templates select="tei:expan"
212
			mode="#current" />
213
	</xsl:template>
224 214

  
215
	<xsl:template match="tei:choice[tei:abbr]"
216
		mode="letters-alignable">
217
		<xsl:apply-templates select="tei:expan"
218
			mode="#current" />
219
	</xsl:template>
220

  
221
	<xsl:template match="tei:choice[tei:abbr]"
222
		mode="characters-alignable">
223
		<xsl:apply-templates select="tei:abbr"
224
			mode="#current" />
225
	</xsl:template>
226

  
227
	<xsl:template match="tei:choice[tei:orig]" mode="#all">
228
		<xsl:apply-templates select="tei:orig"
229
			mode="#current" />
230
	</xsl:template>
231

  
232
	<xsl:template match="tei:reg" mode="#all"></xsl:template>
233

  
234
	<xsl:template match="tei:orig" mode="#all">
235
		<xsl:apply-templates mode="#current" />
236
	</xsl:template>
237

  
238
	<xsl:template match="tei:ex" mode="expan">
239
		<xsl:text>(</xsl:text>
240
		<xsl:value-of select="." />
241
		<xsl:text>)</xsl:text>
242
	</xsl:template>
243

  
244
	<xsl:template match="tei:ex" mode="letters-all">
245
		<xsl:value-of select="." />
246
	</xsl:template>
247

  
248
	<xsl:template match="tei:ex" mode="letters-alignable" />
249

  
250
	<xsl:template match="tei:ex" mode="characters-alignable">
251
		<xsl:choose>
252
			<xsl:when test="matches(.,'^(cum|com|con)$','i')">
253
				&#xA76F;
254
			</xsl:when>
255
			<xsl:when test="matches(.,'^et$','i')">
256
				&#x204A;
257
			</xsl:when>
258
			<xsl:when test="matches(.,'^est$','i')">
259
				&#x223B;
260
			</xsl:when>
261
			<xsl:when test="matches(.,'^us$','i')">
262
				&#xA770;
263
			</xsl:when>
264
			<xsl:otherwise />
265
		</xsl:choose>
266
	</xsl:template>
267

  
268
	<xsl:template match="tei:supplied"></xsl:template>
269

  
270

  
271

  
272

  
273
	<xsl:template match="tei:w//text()"
274
		mode="letters-alignable characters-alignable">
275
		<xsl:analyze-string select="." regex="\p{{M}}">
276
			<xsl:matching-substring />
277
			<xsl:non-matching-substring>
278
				<xsl:value-of select="." />
279
			</xsl:non-matching-substring>
280
		</xsl:analyze-string>
281
	</xsl:template>
282

  
225 283
</xsl:stylesheet>

Also available in: Unified diff