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

txm-front-teioriflammsc-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="#all" 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="#all" 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="^(.*)/([^/]+)\.xml$">
58
      <xsl:matching-substring>
59
        <xsl:value-of select="replace(regex-group(2),'-c$','')"/>
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="^(.*)/([^/]+)\.xml$">
67
			<xsl:matching-substring>
68
				<xsl:value-of select="replace(regex-group(2),'-c$','')" />
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" xmlns="http://www.tei-c.org/ns/1.0">
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" select="descendant::tei:c"/></xsl:attribute>
112
    <xsl:attribute name="letters-all"><xsl:apply-templates mode="letters-all" select="descendant::tei:c"/></xsl:attribute>
113
    <xsl:attribute name="letters-alignable"><xsl:apply-templates mode="letters-alignable" select="descendant::tei:c"/></xsl:attribute>
114
    <xsl:attribute name="characters"><xsl:apply-templates mode="characters-alignable" select="descendant::tei:c"/></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
			xmlns="http://www.tei-c.org/ns/1.0">
120
			<xsl:apply-templates select="@*" />
121
		</milestone>
122
	</xsl:template>
123

  
124
	<xsl:template match="tei:w[not(tei:seg[@type='wp'])]">
125
		<xsl:element name="w"
126
			namespace="http://www.tei-c.org/ns/1.0">
127
			<xsl:apply-templates select="@*" />
128
			<xsl:attribute name="expan"><xsl:apply-templates
129
				mode="expan" select="descendant::tei:c" /></xsl:attribute>
130
			<xsl:attribute name="letters-all"><xsl:apply-templates
131
				mode="letters-all" select="descendant::tei:c" /></xsl:attribute>
132
			<xsl:attribute name="letters-alignable"><xsl:apply-templates
133
				mode="letters-alignable" select="descendant::tei:c" /></xsl:attribute>
134
			<xsl:attribute name="characters"><xsl:apply-templates
135
				mode="characters-alignable" select="descendant::tei:c" /></xsl:attribute>
136
			<xsl:attribute name="abbr-n">
116 137
      <xsl:choose>
117 138
        <xsl:when test="descendant::tei:abbr">
118
          <xsl:value-of select="count(descendant::tei:abbr)"/>
139
          <xsl:value-of
140
				select="count(descendant::tei:abbr)" />
119 141
        </xsl:when>
120 142
        <xsl:when test="descendant::tei:expan">
121
          <xsl:value-of select="count(descendant::tei:expan)"/>
143
          <xsl:value-of
144
				select="count(descendant::tei:expan)" />
122 145
        </xsl:when>
123 146
        <xsl:when test="descendant::tei:ex">
124
          <xsl:value-of select="count(descendant::tei:ex)"/>
147
          <xsl:value-of select="count(descendant::tei:ex)" />
125 148
        </xsl:when>
126 149
        <xsl:otherwise>0</xsl:otherwise>
127 150
      </xsl:choose>
128 151
    </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" select="descendant::tei:c"/></xsl:attribute>
138
      <xsl:attribute name="letters-all"><xsl:apply-templates mode="letters-all" select="descendant::tei:c"/></xsl:attribute>
139
      <xsl:attribute name="letters-alignable"><xsl:apply-templates mode="letters-alignable" select="descendant::tei:c"/></xsl:attribute>
140
      <xsl:attribute name="characters"><xsl:apply-templates mode="characters-alignable" select="descendant::tei:c"/></xsl:attribute>
141
      <xsl:attribute name="abbr-n">
152
			<xsl:attribute name="ref"><xsl:value-of
153
				select="concat($filename,', f. ',preceding::tei:pb[1]/@n,', col. ',preceding::tei:cb[1]/@n,', l. ',preceding::tei:lb[1]/@n)" /></xsl:attribute>
154
			<xsl:apply-templates />
155
		</xsl:element>
156
	</xsl:template>
157

  
158
	<xsl:template match="tei:w[tei:seg[@type='wp']]">
159
		<xsl:element name="w-lb"
160
			namespace="http://www.tei-c.org/ns/1.0">
161
			<xsl:apply-templates select="@*" />
162
			<xsl:attribute name="expan"><xsl:apply-templates
163
				mode="expan" select="descendant::tei:c" /></xsl:attribute>
164
			<xsl:attribute name="letters-all"><xsl:apply-templates
165
				mode="letters-all" select="descendant::tei:c" /></xsl:attribute>
166
			<xsl:attribute name="letters-alignable"><xsl:apply-templates
167
				mode="letters-alignable" select="descendant::tei:c" /></xsl:attribute>
168
			<xsl:attribute name="characters"><xsl:apply-templates
169
				mode="characters-alignable" select="descendant::tei:c" /></xsl:attribute>
170
			<xsl:attribute name="abbr-n">
142 171
        <xsl:choose>
143 172
          <xsl:when test="descendant::tei:abbr">
144
            <xsl:value-of select="count(descendant::tei:abbr)"/>
173
            <xsl:value-of
174
				select="count(descendant::tei:abbr)" />
145 175
          </xsl:when>
146 176
          <xsl:when test="descendant::tei:expan">
147
            <xsl:value-of select="count(descendant::tei:expan)"/>
177
            <xsl:value-of
178
				select="count(descendant::tei:expan)" />
148 179
          </xsl:when>
149 180
          <xsl:when test="descendant::tei:ex">
150
            <xsl:value-of select="count(descendant::tei:ex)"/>
181
            <xsl:value-of
182
				select="count(descendant::tei:ex)" />
151 183
          </xsl:when>
152 184
          <xsl:otherwise>0</xsl:otherwise>
153 185
        </xsl:choose>
154
      </xsl:attribute>      <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>
155
      <xsl:apply-templates/>
156
    </xsl:element>
157
  </xsl:template>
158
  
159
  <xsl:template match="tei:seg[@type='wp']">
160
    <xsl:element name="w" namespace="http://www.tei-c.org/ns/1.0">
161
      <xsl:apply-templates select="@*"/>
162
      <xsl:attribute name="expan"><xsl:apply-templates mode="expan" select="descendant::tei:c"/></xsl:attribute>
163
      <xsl:attribute name="letters-all"><xsl:apply-templates mode="letters-all" select="descendant::tei:c"/></xsl:attribute>
164
      <xsl:attribute name="letters-alignable"><xsl:apply-templates mode="letters-alignable" select="descendant::tei:c"/></xsl:attribute>
165
      <xsl:attribute name="characters"><xsl:apply-templates mode="characters-alignable" select="descendant::tei:c"/></xsl:attribute>
166
      <xsl:attribute name="abbr-n">
186
      </xsl:attribute>
187
			<xsl:attribute name="ref"><xsl:value-of
188
				select="concat($filename,', f. ',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>
192

  
193
	<xsl:template match="tei:seg[@type='wp']">
194
		<xsl:element name="w"
195
			namespace="http://www.tei-c.org/ns/1.0">
196
			<xsl:apply-templates select="@*" />
197
			<xsl:attribute name="expan"><xsl:apply-templates
198
				mode="expan" select="descendant::tei:c" /></xsl:attribute>
199
			<xsl:attribute name="letters-all"><xsl:apply-templates
200
				mode="letters-all" select="descendant::tei:c" /></xsl:attribute>
201
			<xsl:attribute name="letters-alignable"><xsl:apply-templates
202
				mode="letters-alignable" select="descendant::tei:c" /></xsl:attribute>
203
			<xsl:attribute name="characters"><xsl:apply-templates
204
				mode="characters-alignable" select="descendant::tei:c" /></xsl:attribute>
205
			<xsl:attribute name="abbr-n">
167 206
        <xsl:choose>
168 207
          <xsl:when test="descendant::tei:abbr">
169
            <xsl:value-of select="count(descendant::tei:abbr)"/>
208
            <xsl:value-of
209
				select="count(descendant::tei:abbr)" />
170 210
          </xsl:when>
171 211
          <xsl:when test="descendant::tei:expan">
172
            <xsl:value-of select="count(descendant::tei:expan)"/>
212
            <xsl:value-of
213
				select="count(descendant::tei:expan)" />
173 214
          </xsl:when>
174 215
          <xsl:when test="descendant::tei:ex">
175
            <xsl:value-of select="count(descendant::tei:ex)"/>
216
            <xsl:value-of
217
				select="count(descendant::tei:ex)" />
176 218
          </xsl:when>
177 219
          <xsl:otherwise>0</xsl:otherwise>
178 220
        </xsl:choose>
179 221
      </xsl:attribute>
180
      <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>
181
      <xsl:apply-templates/>
182
    </xsl:element>
183
  </xsl:template>
184
  
185
  <xsl:template match="tei:pc[not(child::tei:reg or @ana='ori:align-no')]">
186
    <xsl:element name="w" namespace="http://www.tei-c.org/ns/1.0">
187
      <xsl:apply-templates select="@*"/>
188
      <xsl:attribute name="type">pc</xsl:attribute>
189
      <xsl:attribute name="expan"><xsl:apply-templates select="descendant::tei:c"/></xsl:attribute>
190
      <xsl:attribute name="letters-all"/>
191
      <xsl:attribute name="letters-alignable"/>
192
      <xsl:attribute name="characters"><xsl:apply-templates mode="characters-alignable" select="descendant::tei:c"/></xsl:attribute>
193
      <xsl:attribute name="abbr-n">
194
        <xsl:value-of select="0"/>
222
			<xsl:attribute name="ref"><xsl:value-of
223
				select="concat($filename,', f. ',preceding::tei:pb[1]/@n,', col. ',preceding::tei:cb[1]/@n,', l. ',preceding::tei:lb[1]/@n)" /></xsl:attribute>
224
			<xsl:apply-templates />
225
		</xsl:element>
226
	</xsl:template>
227

  
228
	<xsl:template
229
		match="tei:pc[not(child::tei:reg or @ana='ori:align-no')]">
230
		<xsl:element name="w"
231
			namespace="http://www.tei-c.org/ns/1.0">
232
			<xsl:apply-templates select="@*" />
233
			<xsl:attribute name="type">pc</xsl:attribute>
234
			<xsl:attribute name="expan"><xsl:apply-templates
235
				select="descendant::tei:c" /></xsl:attribute>
236
			<xsl:attribute name="letters-all" />
237
			<xsl:attribute name="letters-alignable" />
238
			<xsl:attribute name="characters"><xsl:apply-templates
239
				mode="characters-alignable" select="descendant::tei:c" /></xsl:attribute>
240
			<xsl:attribute name="abbr-n">
241
        <xsl:value-of select="0" />
195 242
      </xsl:attribute>
196
      <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>
197
      <xsl:apply-templates/>
198
    </xsl:element>
199
  </xsl:template>
200
  
201
  <xsl:template match="tei:pc[child::tei:reg or @ana='ori:align-no']">
202
    <xsl:comment><xsl:copy-of select="."/></xsl:comment>
203
  </xsl:template>
243
			<xsl:attribute name="ref"><xsl:value-of
244
				select="concat($filename,', f. ',preceding::tei:pb[1]/@n,', col. ',preceding::tei:cb[1]/@n,', l. ',preceding::tei:lb[1]/@n)" /></xsl:attribute>
245
			<xsl:apply-templates />
246
		</xsl:element>
247
	</xsl:template>
204 248

  
205
  <xsl:template match="tei:choice[tei:abbr]">
206
    <xsl:apply-templates select="tei:abbr"/>
207
  </xsl:template>
208
  
209
  <xsl:template match="tei:choice[tei:abbr]" mode="expan">
210
    <xsl:apply-templates select="tei:expan" mode="#current"/>
211
  </xsl:template>
212
  
213
  <xsl:template match="tei:choice[tei:abbr]" mode="letters-all">
214
    <xsl:apply-templates select="tei:expan" mode="#current"/>
215
  </xsl:template>
216
  
217
  <xsl:template match="tei:choice[tei:abbr]" mode="letters-alignable">
218
    <xsl:apply-templates select="tei:expan" mode="#current"/>
219
  </xsl:template>
249
	<xsl:template
250
		match="tei:pc[child::tei:reg or @ana='ori:align-no']">
251
		<xsl:comment>
252
			<xsl:copy-of select="." />
253
		</xsl:comment>
254
	</xsl:template>
220 255

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

  
260
<xsl:template match="tei:c">
261
  <xsl:element name="c" namespace="http://www.tei-c.org/ns/1.0">
262
    <xsl:apply-templates select="@*"/>
263
    <xsl:attribute name="expan">
264
      <xsl:apply-templates select="." mode="expan"/>
260
	<xsl:template match="tei:choice[tei:abbr]" mode="expan">
261
		<xsl:apply-templates select="tei:expan"
262
			mode="#current" />
263
	</xsl:template>
264

  
265
	<xsl:template match="tei:choice[tei:abbr]"
266
		mode="letters-all">
267
		<xsl:apply-templates select="tei:expan"
268
			mode="#current" />
269
	</xsl:template>
270

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

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

  
283
	<xsl:template match="tei:choice[tei:orig]" mode="#all">
284
		<xsl:apply-templates select="tei:orig"
285
			mode="#current" />
286
	</xsl:template>
287

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

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

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

  
300
	<xsl:template match="tei:ex" mode="letters-all">
301
		<xsl:value-of select="." />
302
	</xsl:template>
303

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

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

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

  
326

  
327
	<xsl:template match="tei:c">
328
		<xsl:element name="c"
329
			namespace="http://www.tei-c.org/ns/1.0">
330
			<xsl:apply-templates select="@*" />
331
			<xsl:attribute name="expan">
332
      <xsl:apply-templates select="." mode="expan" />
265 333
    </xsl:attribute>
266
    <xsl:attribute name="letters-all">
267
      <xsl:apply-templates select="." mode="letters-all"/>
334
			<xsl:attribute name="letters-all">
335
      <xsl:apply-templates select="."
336
				mode="letters-all" />
268 337
    </xsl:attribute>
269
    <xsl:attribute name="letters-alignable">
270
      <xsl:apply-templates select="." mode="letters-alignable"></xsl:apply-templates>
338
			<xsl:attribute name="letters-alignable">
339
      <xsl:apply-templates select="."
340
				mode="letters-alignable"></xsl:apply-templates>
271 341
    </xsl:attribute>
272
    <xsl:attribute name="characters">
273
      <xsl:apply-templates mode="characters-alignable"/>
342
			<xsl:attribute name="characters">
343
      <xsl:apply-templates
344
				mode="characters-alignable" />
274 345
    </xsl:attribute>
275
    <xsl:attribute name="abbr-n">
346
			<xsl:attribute name="abbr-n">
276 347
      <xsl:choose>
277
        <xsl:when test="ancestor::tei:abbr and not(following-sibling::tei:c)">1</xsl:when>
278
        <xsl:when test="ancestor::tei:expan and not(following-sibling::tei:c)">1</xsl:when>
348
        <xsl:when
349
				test="ancestor::tei:abbr and not(following-sibling::tei:c)">1</xsl:when>
350
        <xsl:when
351
				test="ancestor::tei:expan and not(following-sibling::tei:c)">1</xsl:when>
279 352
        <!--<xsl:when test="ancestor::tei:ex and not(following-sibling::tei:c)">1</xsl:when>-->
280 353
        <xsl:otherwise>0</xsl:otherwise>
281 354
      </xsl:choose>
282 355
    </xsl:attribute>
283
    <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>
284
    <xsl:apply-templates/>
285
  </xsl:element>
286
</xsl:template>
287
  
288
  <xsl:template match="tei:c" mode="expan">
289
    <xsl:if test="not(@type='am') and not(ancestor::tei:abbr[parent::tei:choice/tei:expan[not(tei:ex)]])">
290
      <xsl:apply-templates mode="letters-alignable"/>
291
    </xsl:if>
292
    <xsl:choose>
293
      <xsl:when test="not(following-sibling::tei:c) and ancestor::tei:abbr[parent::tei:choice/tei:expan/tei:ex]">
294
        <xsl:text>(</xsl:text>
295
        <xsl:value-of select="ancestor::tei:choice/tei:expan/tei:ex"/>
296
        <xsl:text>)</xsl:text>
297
      </xsl:when>
298
      <xsl:when test="not(following-sibling::tei:c) and ancestor::tei:abbr[parent::tei:choice/tei:expan[not(tei:ex)]]">
299
        <xsl:text>(</xsl:text>
300
        <xsl:value-of select="ancestor::tei:choice/tei:expan"/>
301
        <xsl:text>)</xsl:text>
302
      </xsl:when>
303
      <xsl:when test="not(following-sibling::tei:c) and following-sibling::*[1][self::tei:choice[tei:abbr[not(child::node())]]]">
304
        <xsl:text>(</xsl:text>
305
        <xsl:value-of select="following-sibling::tei:choice[1]//tei:ex"/>
306
        <xsl:text>)</xsl:text>
307
      </xsl:when>
308
      <xsl:otherwise/>
309
    </xsl:choose>
310
  </xsl:template>
311
  
312
  <xsl:template match="tei:c" mode="letters-all">
313
    <xsl:if test="not(@type='am') and not(ancestor::tei:abbr[parent::tei:choice/tei:expan[not(tei:ex)]])">
314
      <xsl:apply-templates mode="letters-alignable"/>
315
    </xsl:if>
316
    <xsl:choose>
317
      <xsl:when test="not(following-sibling::tei:c) and ancestor::tei:abbr[parent::tei:choice/tei:expan/tei:ex]">
318
        <xsl:value-of select="ancestor::tei:choice/tei:expan/tei:ex"/>
319
      </xsl:when>
320
      <xsl:when test="not(following-sibling::tei:c) and ancestor::tei:abbr[parent::tei:choice/tei:expan[not(tei:ex)]]">
321
        <xsl:value-of select="ancestor::tei:choice/tei:expan"/>
322
      </xsl:when>
323
      <xsl:when test="not(following-sibling::tei:c) and following-sibling::*[1][self::tei:choice[tei:abbr[not(child::node())]]]">
324
        <xsl:value-of select="following-sibling::tei:choice[1]//tei:ex"/>
325
      </xsl:when>
326
      <xsl:otherwise/>
327
    </xsl:choose>
328
  </xsl:template>
329
  
330
  <xsl:template match="tei:c" mode="letters-alignable">
331
    <xsl:choose>
332
      <xsl:when test="@type='am' and not(ancestor::tei:abbr[parent::tei:choice/tei:expan[not(tei:ex)]])"/>
333
      <xsl:otherwise><xsl:apply-templates mode="letters-alignable"/></xsl:otherwise>
334
    </xsl:choose>
335
  </xsl:template>
336
  
337
  <xsl:template match="tei:c" mode="characters-alignable">
338
    <xsl:apply-templates mode="characters-alignable"/>
339
  </xsl:template>
340
  
341
  <xsl:template match="tei:g[@type='am']" mode="letters-alignable letters-all"></xsl:template>
342
  
343
  <xsl:template match="tei:g[@type='am' and matches(.,'\p{M}')]" mode="characters-alignable"></xsl:template>
356
			<xsl:attribute name="ref"><xsl:value-of
357
				select="concat($filename,', f. ',preceding::tei:pb[1]/@n,', col. ',preceding::tei:cb[1]/@n,', l. ',preceding::tei:lb[1]/@n)" /></xsl:attribute>
358
			<xsl:apply-templates />
359
		</xsl:element>
360
	</xsl:template>
344 361

  
362
	<xsl:template match="tei:c" mode="expan">
363
		<xsl:if
364
			test="not(@type='am') and not(ancestor::tei:abbr[parent::tei:choice/tei:expan[not(tei:ex)]])">
365
			<xsl:apply-templates mode="letters-alignable" />
366
		</xsl:if>
367
		<xsl:choose>
368
			<xsl:when
369
				test="not(following-sibling::tei:c) and ancestor::tei:abbr[parent::tei:choice/tei:expan/tei:ex]">
370
				<xsl:text>(</xsl:text>
371
				<xsl:value-of
372
					select="ancestor::tei:choice/tei:expan/tei:ex" />
373
				<xsl:text>)</xsl:text>
374
			</xsl:when>
375
			<xsl:when
376
				test="not(following-sibling::tei:c) and ancestor::tei:abbr[parent::tei:choice/tei:expan[not(tei:ex)]]">
377
				<xsl:text>(</xsl:text>
378
				<xsl:value-of select="ancestor::tei:choice/tei:expan" />
379
				<xsl:text>)</xsl:text>
380
			</xsl:when>
381
			<xsl:when
382
				test="not(following-sibling::tei:c) and following-sibling::*[1][self::tei:choice[tei:abbr[not(child::node())]]]">
383
				<xsl:text>(</xsl:text>
384
				<xsl:value-of
385
					select="following-sibling::tei:choice[1]//tei:ex" />
386
				<xsl:text>)</xsl:text>
387
			</xsl:when>
388
			<xsl:otherwise />
389
		</xsl:choose>
390
	</xsl:template>
345 391

  
346
<!--  <xsl:template match="tei:w//text()" mode="letters-alignable characters-alignable">
347
    <xsl:choose>
348
      <xsl:when test="ancestor::tei:c">
349
        <xsl:analyze-string select="." regex="\p{{M}}">
350
          <xsl:matching-substring/>
351
          <xsl:non-matching-substring><xsl:value-of select="."/></xsl:non-matching-substring>
352
        </xsl:analyze-string>      
353
      </xsl:when>
354
      <xsl:otherwise/>
355
    </xsl:choose>
356
  </xsl:template>
357
-->
392
	<xsl:template match="tei:c" mode="letters-all">
393
		<xsl:if
394
			test="not(@type='am') and not(ancestor::tei:abbr[parent::tei:choice/tei:expan[not(tei:ex)]])">
395
			<xsl:apply-templates mode="letters-alignable" />
396
		</xsl:if>
397
		<xsl:choose>
398
			<xsl:when
399
				test="not(following-sibling::tei:c) and ancestor::tei:abbr[parent::tei:choice/tei:expan/tei:ex]">
400
				<xsl:value-of
401
					select="ancestor::tei:choice/tei:expan/tei:ex" />
402
			</xsl:when>
403
			<xsl:when
404
				test="not(following-sibling::tei:c) and ancestor::tei:abbr[parent::tei:choice/tei:expan[not(tei:ex)]]">
405
				<xsl:value-of select="ancestor::tei:choice/tei:expan" />
406
			</xsl:when>
407
			<xsl:when
408
				test="not(following-sibling::tei:c) and following-sibling::*[1][self::tei:choice[tei:abbr[not(child::node())]]]">
409
				<xsl:value-of
410
					select="following-sibling::tei:choice[1]//tei:ex" />
411
			</xsl:when>
412
			<xsl:otherwise />
413
		</xsl:choose>
414
	</xsl:template>
358 415

  
359
  <xsl:template match="tei:w//text()" mode="expan letters-all">
360
    <xsl:choose>
361
      <xsl:when test="ancestor::tei:c">
362
        <xsl:value-of select="."></xsl:value-of>
363
      </xsl:when>
364
      <xsl:otherwise/>
365
    </xsl:choose>
366
  </xsl:template>
367
  
416
	<xsl:template match="tei:c" mode="letters-alignable">
417
		<xsl:choose>
418
			<xsl:when
419
				test="@type='am' and not(ancestor::tei:abbr[parent::tei:choice/tei:expan[not(tei:ex)]])" />
420
			<xsl:otherwise>
421
				<xsl:apply-templates mode="letters-alignable" />
422
			</xsl:otherwise>
423
		</xsl:choose>
424
	</xsl:template>
368 425

  
369
  <xsl:template match="tei:w//text()" mode="characters-alignable">
370
    <xsl:choose>
371
      <xsl:when test="ancestor::tei:c">
372
        <xsl:analyze-string select="." regex="\p{{M}}|\s">
373
          <xsl:matching-substring/>
374
          <xsl:non-matching-substring><xsl:value-of select="."/></xsl:non-matching-substring>
375
        </xsl:analyze-string>        
376
      </xsl:when>
377
      <xsl:otherwise/>
378
    </xsl:choose>
379
  </xsl:template>
380
  
381
  <xsl:template match="tei:w//text()" mode="letters-alignable">
382
    <xsl:choose>
383
      <xsl:when test="ancestor::tei:c">
384
        <xsl:analyze-string select="." regex=".">
385
          <xsl:matching-substring>
386
            <xsl:choose>
387
              <xsl:when test="matches(.,'\p{M}|\s')"></xsl:when>
388
              <xsl:when test="matches(.,$alignable-abbreviation-marks)"/>
389
              <xsl:when test="matches(.,$modified-letters)">
390
                <xsl:call-template name="modified-letters"/>
391
              </xsl:when>
392
              <xsl:otherwise><xsl:value-of select="."/></xsl:otherwise>
393
            </xsl:choose>
394
          </xsl:matching-substring>
395
        </xsl:analyze-string>
396
      </xsl:when>
397
      <xsl:otherwise/>
398
    </xsl:choose>
399
  </xsl:template>
400
  
401
  <xsl:variable name="modified-letters">^(&#x0141;|&#x0142;|[&#xA748;-&#xA759;])$</xsl:variable>
402
  <xsl:variable name="alignable-abbreviation-marks">^(&amp;|&#x204A;|&#x2079;|&#x223B;|&#xA76F;|&#xA770;|&#xF158;|&#xF1A6;|&#xF1AC;)$</xsl:variable>
403
  
404
  <xsl:template name="modified-letters">
405
    <xsl:choose>
406
      <xsl:when test="matches(.,'&#x0141;|&#xA748;')">L</xsl:when>
407
      <xsl:when test="matches(.,'&#x0142;|&#xA749;')">l</xsl:when>
408
      <xsl:when test="matches(.,'&#xA750;|&#xA752;|&#xA754;')">P</xsl:when>
409
      <xsl:when test="matches(.,'&#xA751;|&#xA753;|&#xA755;')">p</xsl:when>
410
      <xsl:when test="matches(.,'&#xA756;|&#xA758;')">Q</xsl:when>
411
      <xsl:when test="matches(.,'&#xA757;|&#xA759;')">q</xsl:when>
412
      <xsl:otherwise><xsl:value-of select="."/></xsl:otherwise>
413
    </xsl:choose>
414
  </xsl:template>
426
	<xsl:template match="tei:c" mode="characters-alignable">
427
		<xsl:apply-templates mode="characters-alignable" />
428
	</xsl:template>
415 429

  
430
	<xsl:template match="tei:g[@type='am']"
431
		mode="letters-alignable letters-all"></xsl:template>
432

  
433
	<xsl:template
434
		match="tei:g[@type='am' and matches(.,'\p{M}')]"
435
		mode="characters-alignable"></xsl:template>
436

  
437

  
438
	<!-- <xsl:template match="tei:w//text()" mode="letters-alignable characters-alignable"> 
439
		<xsl:choose> <xsl:when test="ancestor::tei:c"> <xsl:analyze-string select="." 
440
		regex="\p{{M}}"> <xsl:matching-substring/> <xsl:non-matching-substring><xsl:value-of 
441
		select="."/></xsl:non-matching-substring> </xsl:analyze-string> </xsl:when> 
442
		<xsl:otherwise/> </xsl:choose> </xsl:template> -->
443

  
444
	<xsl:template match="tei:w//text()"
445
		mode="expan letters-all">
446
		<xsl:choose>
447
			<xsl:when test="ancestor::tei:c">
448
				<xsl:value-of select="."></xsl:value-of>
449
			</xsl:when>
450
			<xsl:otherwise />
451
		</xsl:choose>
452
	</xsl:template>
453

  
454

  
455
	<xsl:template match="tei:w//text()"
456
		mode="characters-alignable">
457
		<xsl:choose>
458
			<xsl:when test="ancestor::tei:c">
459
				<xsl:analyze-string select="." regex="\p{{M}}|\s">
460
					<xsl:matching-substring />
461
					<xsl:non-matching-substring>
462
						<xsl:value-of select="." />
463
					</xsl:non-matching-substring>
464
				</xsl:analyze-string>
465
			</xsl:when>
466
			<xsl:otherwise />
467
		</xsl:choose>
468
	</xsl:template>
469

  
470
	<xsl:template match="tei:w//text()"
471
		mode="letters-alignable">
472
		<xsl:choose>
473
			<xsl:when test="ancestor::tei:c">
474
				<xsl:analyze-string select="." regex=".">
475
					<xsl:matching-substring>
476
						<xsl:choose>
477
							<xsl:when test="matches(.,'\p{M}|\s')"></xsl:when>
478
							<xsl:when
479
								test="matches(.,$alignable-abbreviation-marks)" />
480
							<xsl:when test="matches(.,$modified-letters)">
481
								<xsl:call-template name="modified-letters" />
482
							</xsl:when>
483
							<xsl:otherwise>
484
								<xsl:value-of select="." />
485
							</xsl:otherwise>
486
						</xsl:choose>
487
					</xsl:matching-substring>
488
				</xsl:analyze-string>
489
			</xsl:when>
490
			<xsl:otherwise />
491
		</xsl:choose>
492
	</xsl:template>
493

  
494
	<xsl:variable name="modified-letters">
495
		^(&#x0141;|&#x0142;|[&#xA748;-&#xA759;])$
496
	</xsl:variable>
497
	<xsl:variable name="alignable-abbreviation-marks">^(&amp;|&#x204A;|&#x2079;|&#x223B;|&#xA76F;|&#xA770;|&#xF158;|&#xF1A6;|&#xF1AC;)$
498
	</xsl:variable>
499

  
500
	<xsl:template name="modified-letters">
501
		<xsl:choose>
502
			<xsl:when test="matches(.,'&#x0141;|&#xA748;')">
503
				L
504
			</xsl:when>
505
			<xsl:when test="matches(.,'&#x0142;|&#xA749;')">
506
				l
507
			</xsl:when>
508
			<xsl:when test="matches(.,'&#xA750;|&#xA752;|&#xA754;')">
509
				P
510
			</xsl:when>
511
			<xsl:when test="matches(.,'&#xA751;|&#xA753;|&#xA755;')">
512
				p
513
			</xsl:when>
514
			<xsl:when test="matches(.,'&#xA756;|&#xA758;')">
515
				Q
516
			</xsl:when>
517
			<xsl:when test="matches(.,'&#xA757;|&#xA759;')">
518
				q
519
			</xsl:when>
520
			<xsl:otherwise>
521
				<xsl:value-of select="." />
522
			</xsl:otherwise>
523
		</xsl:choose>
524
	</xsl:template>
525

  
416 526
</xsl:stylesheet>

Also available in: Unified diff