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

txm-front-teioriflammsw-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:facsimile"/>
65
  
66
<xsl:template match="tei:teiCorpus">
67
  <TEI xmlns="http://www.tei-c.org/ns/1.0">
68
    <text>
69
      <!-- on ajoute des attributs utiles pour la création de partitions et de sous-corpus -->
70
      <xsl:apply-templates/>
71
    </text>
72
  </TEI>
73
</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>
74 72

  
73
	<xsl:template match="tei:facsimile" />
75 74

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

  
98
<xsl:template match="tei:milestone[@unit='surface']">
99
  <pb xmlns="http://www.tei-c.org/ns/1.0" n="{following::tei:pb[1]/@n}" facs="{@facs}" xml:id="{@xml:id}"/>
100
</xsl:template>
101
  
102
  <xsl:template match="tei:pb">
103
    <milestone unit="ms-page">
104
      <xsl:apply-templates select="@*"/>
105
    </milestone>
106
  </xsl:template>
107 85

  
108
<xsl:template match="tei:w[not(tei:seg[@type='wp'])]">
109
  <xsl:element name="w" namespace="http://www.tei-c.org/ns/1.0">
110
    <xsl:apply-templates select="@*"/>
111
    <xsl:attribute name="expan"><xsl:apply-templates mode="expan"/></xsl:attribute>
112
    <xsl:attribute name="letters-all"><xsl:apply-templates mode="letters-all"/></xsl:attribute>
113
    <xsl:attribute name="letters-alignable"><xsl:apply-templates mode="letters-alignable"/></xsl:attribute>
114
    <xsl:attribute name="characters"><xsl:apply-templates mode="characters-alignable"/></xsl:attribute>
115
    <xsl:attribute name="abbr-n">
86
	<xsl:template match="tei:TEI[ancestor::tei:teiCorpus]">
87
		<xsl:apply-templates />
88
	</xsl:template>
89

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

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

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

  
112
	<xsl:template match="tei:milestone[@unit='surface']">
113
		<pb xmlns="http://www.tei-c.org/ns/1.0"
114
			n="{following::tei:pb[1]/@n}" facs="{@facs}" xml:id="{@xml:id}" />
115
	</xsl:template>
116

  
117
	<xsl:template match="tei:pb">
118
		<milestone unit="ms-page">
119
			<xsl:apply-templates select="@*" />
120
		</milestone>
121
	</xsl:template>
122

  
123
	<xsl:template match="tei:w[not(tei:seg[@type='wp'])]">
124
		<xsl:element name="w"
125
			namespace="http://www.tei-c.org/ns/1.0">
126
			<xsl:apply-templates select="@*" />
127
			<xsl:attribute name="expan"><xsl:apply-templates
128
				mode="expan" /></xsl:attribute>
129
			<xsl:attribute name="letters-all"><xsl:apply-templates
130
				mode="letters-all" /></xsl:attribute>
131
			<xsl:attribute name="letters-alignable"><xsl:apply-templates
132
				mode="letters-alignable" /></xsl:attribute>
133
			<xsl:attribute name="characters"><xsl:apply-templates
134
				mode="characters-alignable" /></xsl:attribute>
135
			<xsl:attribute name="abbr-n">
116 136
      <xsl:choose>
117 137
        <xsl:when test="descendant::tei:abbr">
118
          <xsl:value-of select="count(descendant::tei:abbr)"/>
138
          <xsl:value-of
139
				select="count(descendant::tei:abbr)" />
119 140
        </xsl:when>
120 141
        <xsl:when test="descendant::tei:expan">
121
          <xsl:value-of select="count(descendant::tei:expan)"/>
142
          <xsl:value-of
143
				select="count(descendant::tei:expan)" />
122 144
        </xsl:when>
123 145
        <xsl:when test="descendant::tei:ex">
124
          <xsl:value-of select="count(descendant::tei:ex)"/>
146
          <xsl:value-of select="count(descendant::tei:ex)" />
125 147
        </xsl:when>
126 148
        <xsl:otherwise>0</xsl:otherwise>
127 149
      </xsl:choose>
128 150
    </xsl:attribute>
129
    <xsl:attribute name="ref"><xsl:value-of select="concat($filename,', f. ',preceding::tei:pb[1]/@n,', col. ',preceding::tei:cb[1]/@n,', l. ',preceding::tei:lb[1]/@n)"/></xsl:attribute>
130
    <xsl:apply-templates/>
131
  </xsl:element>
132
</xsl:template>
133
  
134
  <xsl:template match="tei:w[tei:seg[@type='wp']]">
135
    <xsl:element name="w-lb" namespace="http://www.tei-c.org/ns/1.0">
136
      <xsl:apply-templates select="@*"/>
137
      <xsl:attribute name="expan"><xsl:apply-templates mode="expan"/></xsl:attribute>
138
      <xsl:attribute name="letters-all"><xsl:apply-templates mode="letters-all"/></xsl:attribute>
139
      <xsl:attribute name="letters-alignable"><xsl:apply-templates mode="letters-alignable"/></xsl:attribute>
140
      <xsl:attribute name="characters"><xsl:apply-templates mode="characters-alignable"/></xsl:attribute>
141
      <xsl:attribute name="abbr-n">
151
			<xsl:attribute name="ref"><xsl:value-of
152
				select="concat($filename,', f. ',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:w[tei:seg[@type='wp']]">
158
		<xsl:element name="w-lb"
159
			namespace="http://www.tei-c.org/ns/1.0">
160
			<xsl:apply-templates select="@*" />
161
			<xsl:attribute name="expan"><xsl:apply-templates
162
				mode="expan" /></xsl:attribute>
163
			<xsl:attribute name="letters-all"><xsl:apply-templates
164
				mode="letters-all" /></xsl:attribute>
165
			<xsl:attribute name="letters-alignable"><xsl:apply-templates
166
				mode="letters-alignable" /></xsl:attribute>
167
			<xsl:attribute name="characters"><xsl:apply-templates
168
				mode="characters-alignable" /></xsl:attribute>
169
			<xsl:attribute name="abbr-n">
142 170
        <xsl:choose>
143 171
          <xsl:when test="descendant::tei:abbr">
144
            <xsl:value-of select="count(descendant::tei:abbr)"/>
172
            <xsl:value-of
173
				select="count(descendant::tei:abbr)" />
145 174
          </xsl:when>
146 175
          <xsl:when test="descendant::tei:expan">
147
            <xsl:value-of select="count(descendant::tei:expan)"/>
176
            <xsl:value-of
177
				select="count(descendant::tei:expan)" />
148 178
          </xsl:when>
149 179
          <xsl:when test="descendant::tei:ex">
150
            <xsl:value-of select="count(descendant::tei:ex)"/>
180
            <xsl:value-of
181
				select="count(descendant::tei:ex)" />
151 182
          </xsl:when>
152 183
          <xsl:otherwise>0</xsl:otherwise>
153 184
        </xsl:choose>
154 185
      </xsl:attribute>
155
      <xsl:attribute name="ref"><xsl:value-of select="concat($filename,', f. ',preceding::tei:pb[1]/@n,', col. ',preceding::tei:cb[1]/@n,', l. ',preceding::tei:lb[1]/@n)"/></xsl:attribute>
156
      <xsl:apply-templates/>
157
    </xsl:element>
158
  </xsl:template>
159
  
160
  <xsl:template match="tei:seg[@type='wp']">
161
    <xsl:element name="w" namespace="http://www.tei-c.org/ns/1.0">
162
      <xsl:apply-templates select="@*"/>
163
      <xsl:attribute name="expan"><xsl:apply-templates mode="expan"/></xsl:attribute>
164
      <xsl:attribute name="letters-all"><xsl:apply-templates mode="letters-all"/></xsl:attribute>
165
      <xsl:attribute name="letters-alignable"><xsl:apply-templates mode="letters-alignable"/></xsl:attribute>
166
      <xsl:attribute name="characters"><xsl:apply-templates mode="characters-alignable"/></xsl:attribute>
167
      <xsl:attribute name="abbr-n">
168
        <xsl:value-of select="count(descendant::tei:abbr)"/>
186
			<xsl:attribute name="ref"><xsl:value-of
187
				select="concat($filename,', f. ',preceding::tei:pb[1]/@n,', col. ',preceding::tei:cb[1]/@n,', l. ',preceding::tei:lb[1]/@n)" /></xsl:attribute>
188
			<xsl:apply-templates />
189
		</xsl:element>
190
	</xsl:template>
191

  
192
	<xsl:template match="tei:seg[@type='wp']">
193
		<xsl:element name="w"
194
			namespace="http://www.tei-c.org/ns/1.0">
195
			<xsl:apply-templates select="@*" />
196
			<xsl:attribute name="expan"><xsl:apply-templates
197
				mode="expan" /></xsl:attribute>
198
			<xsl:attribute name="letters-all"><xsl:apply-templates
199
				mode="letters-all" /></xsl:attribute>
200
			<xsl:attribute name="letters-alignable"><xsl:apply-templates
201
				mode="letters-alignable" /></xsl:attribute>
202
			<xsl:attribute name="characters"><xsl:apply-templates
203
				mode="characters-alignable" /></xsl:attribute>
204
			<xsl:attribute name="abbr-n">
205
        <xsl:value-of select="count(descendant::tei:abbr)" />
169 206
      </xsl:attribute>
170
      <xsl:attribute name="ref"><xsl:value-of select="concat($filename,', f. ',preceding::tei:pb[1]/@n,', col. ',preceding::tei:cb[1]/@n,', l. ',preceding::tei:lb[1]/@n)"/></xsl:attribute>
171
      <xsl:apply-templates/>
172
    </xsl:element>
173
  </xsl:template>
174
  
175
  <xsl:template match="tei:pc[not(child::tei:reg or @ana='ori:align-no')]">
176
    <xsl:element name="w" 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"><xsl:apply-templates mode="letters-all"/></xsl:attribute>
181
      <xsl:attribute name="letters-alignable"><xsl:apply-templates mode="letters-alignable"/></xsl:attribute>
182
      <xsl:attribute name="characters"><xsl:apply-templates mode="characters-alignable"/></xsl:attribute>
183
      <xsl:attribute name="abbr-n">
184
        <xsl:value-of select="0"/>
207
			<xsl:attribute name="ref"><xsl:value-of
208
				select="concat($filename,', f. ',preceding::tei:pb[1]/@n,', col. ',preceding::tei:cb[1]/@n,', l. ',preceding::tei:lb[1]/@n)" /></xsl:attribute>
209
			<xsl:apply-templates />
210
		</xsl:element>
211
	</xsl:template>
212

  
213
	<xsl:template
214
		match="tei:pc[not(child::tei:reg or @ana='ori:align-no')]">
215
		<xsl:element name="w"
216
			namespace="http://www.tei-c.org/ns/1.0">
217
			<xsl:apply-templates select="@*" />
218
			<xsl:attribute name="type">pc</xsl:attribute>
219
			<xsl:attribute name="expan"><xsl:apply-templates /></xsl:attribute>
220
			<xsl:attribute name="letters-all"><xsl:apply-templates
221
				mode="letters-all" /></xsl:attribute>
222
			<xsl:attribute name="letters-alignable"><xsl:apply-templates
223
				mode="letters-alignable" /></xsl:attribute>
224
			<xsl:attribute name="characters"><xsl:apply-templates
225
				mode="characters-alignable" /></xsl:attribute>
226
			<xsl:attribute name="abbr-n">
227
        <xsl:value-of select="0" />
185 228
      </xsl:attribute>
186
      <xsl:attribute name="ref"><xsl:value-of select="concat($filename,', f. ',preceding::tei:pb[1]/@n,', col. ',preceding::tei:cb[1]/@n,', l. ',preceding::tei:lb[1]/@n)"/></xsl:attribute>
187
      <xsl:apply-templates/>
188
    </xsl:element>
189
  </xsl:template>
190
  
191
  <xsl:template match="tei:pc[child::tei:reg or @ana='ori:align-no']">
192
    <xsl:comment><xsl:copy-of select="."/></xsl:comment>
193
  </xsl:template>
229
			<xsl:attribute name="ref"><xsl:value-of
230
				select="concat($filename,', f. ',preceding::tei:pb[1]/@n,', col. ',preceding::tei:cb[1]/@n,', l. ',preceding::tei:lb[1]/@n)" /></xsl:attribute>
231
			<xsl:apply-templates />
232
		</xsl:element>
233
	</xsl:template>
194 234

  
195
  <xsl:template match="tei:choice[tei:abbr]">
196
    <xsl:apply-templates select="tei:abbr"/>
197
  </xsl:template>
198
  
199
  <xsl:template match="tei:choice[tei:abbr]" mode="expan">
200
    <xsl:apply-templates select="tei:expan" mode="#current"/>
201
  </xsl:template>
202
  
203
  <xsl:template match="tei:choice[tei:abbr]" mode="letters-all">
204
    <xsl:apply-templates select="tei:expan" mode="#current"/>
205
  </xsl:template>
206
  
207
  <xsl:template match="tei:choice[tei:abbr]" mode="letters-alignable">
208
    <xsl:choose>
209
      <xsl:when test="tei:expan[tei:ex]">
210
        <xsl:apply-templates select="tei:expan" mode="#current"/>
211
      </xsl:when>
212
      <xsl:otherwise>
213
        <xsl:apply-templates select="tei:abbr" mode="#current"/>
214
      </xsl:otherwise>
215
    </xsl:choose>
216
  </xsl:template>
235
	<xsl:template
236
		match="tei:pc[child::tei:reg or @ana='ori:align-no']">
237
		<xsl:comment>
238
			<xsl:copy-of select="." />
239
		</xsl:comment>
240
	</xsl:template>
217 241

  
218
  <xsl:template match="tei:choice[tei:abbr]" mode="characters-alignable">
219
    <xsl:apply-templates select="tei:abbr" mode="#current"/>
220
  </xsl:template>
221
  
222
  <xsl:template match="tei:choice[tei:orig]" mode="#all">
223
    <xsl:apply-templates select="tei:orig" mode="#current"/>
224
  </xsl:template>
225
  
226
  <xsl:template match="tei:abbr" mode="letters-alignable">
227
    <xsl:apply-templates select="descendant::text()" mode="letters-alignable"/>
228
  </xsl:template>
229
  
230
  <xsl:template match="tei:reg" mode="#all"></xsl:template>
231
  
232
  <xsl:template match="tei:orig" mode="#all">
233
    <xsl:apply-templates mode="#current"/>
234
  </xsl:template>
235
  
236
  <xsl:template match="tei:ex" mode="expan">
237
    <xsl:text>(</xsl:text>
238
    <xsl:value-of select="normalize-space(.)"/>
239
    <xsl:text>)</xsl:text>
240
  </xsl:template>
241
  
242
  <xsl:template match="tei:ex" mode="letters-all">
243
    <xsl:value-of select="normalize-space(.)"/>
244
  </xsl:template>
245
  
246
  <xsl:template match="tei:ex" mode="letters-alignable"/>
247
  
248
  <xsl:template match="tei:ex" mode="characters-alignable">
249
    <xsl:choose>
250
      <xsl:when test="matches(.,'^(cum|com|con)$','i')">&#xA76F;</xsl:when>
251
      <xsl:when test="matches(.,'^et$','i')">&#x204A;</xsl:when>
252
      <xsl:when test="matches(.,'^est$','i')">&#x223B;</xsl:when>
253
      <xsl:when test="matches(.,'^us$','i')">&#xA770;</xsl:when>
254
      <xsl:otherwise/>
255
    </xsl:choose>
256
  </xsl:template>
257
  
258
  <xsl:template match="tei:supplied"></xsl:template>
259
  
260
  
261
  <xsl:template match="text()" mode="expan letters-all">
262
    <xsl:value-of select="normalize-space(.)"/>
263
  </xsl:template>
242
	<xsl:template match="tei:choice[tei:abbr]">
243
		<xsl:apply-templates select="tei:abbr" />
244
	</xsl:template>
264 245

  
246
	<xsl:template match="tei:choice[tei:abbr]" mode="expan">
247
		<xsl:apply-templates select="tei:expan"
248
			mode="#current" />
249
	</xsl:template>
265 250

  
266
<xsl:template match="tei:w//text()" mode="characters-alignable">
267
  <xsl:analyze-string select="." regex="\p{{M}}|\s">
268
    <xsl:matching-substring/>
269
    <xsl:non-matching-substring><xsl:value-of select="."/></xsl:non-matching-substring>
270
  </xsl:analyze-string>
271
</xsl:template>
272
  
273
  <xsl:template match="tei:w//text()" mode="letters-alignable">
274
    <xsl:analyze-string select="." regex=".">
275
      <xsl:matching-substring>
276
        <xsl:choose>
277
          <xsl:when test="matches(.,'\p{M}|\s')"></xsl:when>
278
          <xsl:when test="matches(.,$alignable-abbreviation-marks)"/>
279
          <xsl:when test="matches(.,$modified-letters)">
280
            <xsl:call-template name="modified-letters"/>
281
          </xsl:when>
282
          <xsl:otherwise><xsl:value-of select="."/></xsl:otherwise>
283
        </xsl:choose>
284
      </xsl:matching-substring>
285
    </xsl:analyze-string>
286
  </xsl:template>
251
	<xsl:template match="tei:choice[tei:abbr]"
252
		mode="letters-all">
253
		<xsl:apply-templates select="tei:expan"
254
			mode="#current" />
255
	</xsl:template>
287 256

  
288
  <xsl:variable name="modified-letters">^(&#x0141;|&#x0142;|[&#xA748;-&#xA759;])$</xsl:variable>
289
  <xsl:variable name="alignable-abbreviation-marks">^(&amp;|&#x204A;|&#x2079;|&#x223B;|&#xA76F;|&#xA770;|&#xF158;|&#xF1A6;|&#xF1AC;)$</xsl:variable>
290
  
291
  <xsl:template name="modified-letters">
292
    <xsl:choose>
293
      <xsl:when test="matches(.,'&#x0141;|&#xA748;')">L</xsl:when>
294
      <xsl:when test="matches(.,'&#x0142;|&#xA749;')">l</xsl:when>
295
      <xsl:when test="matches(.,'&#xA750;|&#xA752;|&#xA754;')">P</xsl:when>
296
      <xsl:when test="matches(.,'&#xA751;|&#xA753;|&#xA755;')">p</xsl:when>
297
      <xsl:when test="matches(.,'&#xA756;|&#xA758;')">Q</xsl:when>
298
      <xsl:when test="matches(.,'&#xA757;|&#xA759;')">q</xsl:when>
299
      <xsl:otherwise><xsl:value-of select="."/></xsl:otherwise>
300
    </xsl:choose>
301
  </xsl:template>
257
	<xsl:template match="tei:choice[tei:abbr]"
258
		mode="letters-alignable">
259
		<xsl:choose>
260
			<xsl:when test="tei:expan[tei:ex]">
261
				<xsl:apply-templates select="tei:expan"
262
					mode="#current" />
263
			</xsl:when>
264
			<xsl:otherwise>
265
				<xsl:apply-templates select="tei:abbr"
266
					mode="#current" />
267
			</xsl:otherwise>
268
		</xsl:choose>
269
	</xsl:template>
302 270

  
271
	<xsl:template match="tei:choice[tei:abbr]"
272
		mode="characters-alignable">
273
		<xsl:apply-templates select="tei:abbr"
274
			mode="#current" />
275
	</xsl:template>
276

  
277
	<xsl:template match="tei:choice[tei:orig]" mode="#all">
278
		<xsl:apply-templates select="tei:orig"
279
			mode="#current" />
280
	</xsl:template>
281

  
282
	<xsl:template match="tei:abbr" mode="letters-alignable">
283
		<xsl:apply-templates select="descendant::text()"
284
			mode="letters-alignable" />
285
	</xsl:template>
286

  
287
	<xsl:template match="tei:reg" mode="#all"></xsl:template>
288

  
289
	<xsl:template match="tei:orig" mode="#all">
290
		<xsl:apply-templates mode="#current" />
291
	</xsl:template>
292

  
293
	<xsl:template match="tei:ex" mode="expan">
294
		<xsl:text>(</xsl:text>
295
		<xsl:value-of select="normalize-space(.)" />
296
		<xsl:text>)</xsl:text>
297
	</xsl:template>
298

  
299
	<xsl:template match="tei:ex" mode="letters-all">
300
		<xsl:value-of select="normalize-space(.)" />
301
	</xsl:template>
302

  
303
	<xsl:template match="tei:ex" mode="letters-alignable" />
304

  
305
	<xsl:template match="tei:ex" mode="characters-alignable">
306
		<xsl:choose>
307
			<xsl:when test="matches(.,'^(cum|com|con)$','i')">
308
				&#xA76F;
309
			</xsl:when>
310
			<xsl:when test="matches(.,'^et$','i')">
311
				&#x204A;
312
			</xsl:when>
313
			<xsl:when test="matches(.,'^est$','i')">
314
				&#x223B;
315
			</xsl:when>
316
			<xsl:when test="matches(.,'^us$','i')">
317
				&#xA770;
318
			</xsl:when>
319
			<xsl:otherwise />
320
		</xsl:choose>
321
	</xsl:template>
322

  
323
	<xsl:template match="tei:supplied"></xsl:template>
324

  
325

  
326
	<xsl:template match="text()" mode="expan letters-all">
327
		<xsl:value-of select="normalize-space(.)" />
328
	</xsl:template>
329

  
330

  
331
	<xsl:template match="tei:w//text()"
332
		mode="characters-alignable">
333
		<xsl:analyze-string select="." regex="\p{{M}}|\s">
334
			<xsl:matching-substring />
335
			<xsl:non-matching-substring>
336
				<xsl:value-of select="." />
337
			</xsl:non-matching-substring>
338
		</xsl:analyze-string>
339
	</xsl:template>
340

  
341
	<xsl:template match="tei:w//text()"
342
		mode="letters-alignable">
343
		<xsl:analyze-string select="." regex=".">
344
			<xsl:matching-substring>
345
				<xsl:choose>
346
					<xsl:when test="matches(.,'\p{M}|\s')"></xsl:when>
347
					<xsl:when test="matches(.,$alignable-abbreviation-marks)" />
348
					<xsl:when test="matches(.,$modified-letters)">
349
						<xsl:call-template name="modified-letters" />
350
					</xsl:when>
351
					<xsl:otherwise>
352
						<xsl:value-of select="." />
353
					</xsl:otherwise>
354
				</xsl:choose>
355
			</xsl:matching-substring>
356
		</xsl:analyze-string>
357
	</xsl:template>
358

  
359
	<xsl:variable name="modified-letters">
360
		^(&#x0141;|&#x0142;|[&#xA748;-&#xA759;])$
361
	</xsl:variable>
362
	<xsl:variable name="alignable-abbreviation-marks">^(&amp;|&#x204A;|&#x2079;|&#x223B;|&#xA76F;|&#xA770;|&#xF158;|&#xF1A6;|&#xF1AC;)$
363
	</xsl:variable>
364

  
365
	<xsl:template name="modified-letters">
366
		<xsl:choose>
367
			<xsl:when test="matches(.,'&#x0141;|&#xA748;')">
368
				L
369
			</xsl:when>
370
			<xsl:when test="matches(.,'&#x0142;|&#xA749;')">
371
				l
372
			</xsl:when>
373
			<xsl:when test="matches(.,'&#xA750;|&#xA752;|&#xA754;')">
374
				P
375
			</xsl:when>
376
			<xsl:when test="matches(.,'&#xA751;|&#xA753;|&#xA755;')">
377
				p
378
			</xsl:when>
379
			<xsl:when test="matches(.,'&#xA756;|&#xA758;')">
380
				Q
381
			</xsl:when>
382
			<xsl:when test="matches(.,'&#xA757;|&#xA759;')">
383
				q
384
			</xsl:when>
385
			<xsl:otherwise>
386
				<xsl:value-of select="." />
387
			</xsl:otherwise>
388
		</xsl:choose>
389
	</xsl:template>
390

  
303 391
</xsl:stylesheet>

Also available in: Unified diff