Statistics
| Revision:

root / tmp / org.txm.oriflamms.rcp / res / txm-front-teioriflammsc-xtz.xsl @ 476

History | View | Annotate | Download (17.4 kB)

1 476 mdecorde
<?xml version="1.0"?>
2 476 mdecorde
<xsl:stylesheet xmlns:edate="http://exslt.org/dates-and-times"
3 476 mdecorde
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:tei="http://www.tei-c.org/ns/1.0"
4 476 mdecorde
  xmlns:me="http://www.menota.org/ns/1.0"
5 476 mdecorde
  xmlns:bfm="http://bfm.ens-lsh.fr/ns/1.0"
6 476 mdecorde
  xmlns:xd="http://www.pnp-software.com/XSLTdoc"
7 476 mdecorde
  exclude-result-prefixes="#all" version="2.0">
8 476 mdecorde
9 476 mdecorde
  <xsl:output method="xml" encoding="utf-8" omit-xml-declaration="no"/>
10 476 mdecorde
11 476 mdecorde
12 476 mdecorde
  <xd:doc type="stylesheet">
13 476 mdecorde
    <xd:short>
14 476 mdecorde
      Cette feuille XSLT prépare les fichiers au format TEI Oriflamms
15 476 mdecorde
      (tokénisés par mot) à l'imppportation dans TXM avec le module XTZ
16 476 mdecorde
      (étape 2 "front").
17 476 mdecorde
    </xd:short>
18 476 mdecorde
    <xd:detail>
19 476 mdecorde
      This stylesheet is free software; you can redistribute it and/or
20 476 mdecorde
      modify it under the terms of the GNU Lesser General Public
21 476 mdecorde
      License as published by the Free Software Foundation; either
22 476 mdecorde
      version 3 of the License, or (at your option) any later version.
23 476 mdecorde
24 476 mdecorde
      This stylesheet is distributed in the hope that it will be useful,
25 476 mdecorde
      but WITHOUT ANY WARRANTY; without even the implied warranty of
26 476 mdecorde
      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
27 476 mdecorde
      Lesser General Public License for more details.
28 476 mdecorde
29 476 mdecorde
      You should have received a copy of GNU Lesser Public License with
30 476 mdecorde
      this stylesheet. If not, see http://www.gnu.org/licenses/lgpl.html
31 476 mdecorde
    </xd:detail>
32 476 mdecorde
    <xd:author>Alexei Lavrentiev alexei.lavrentev@ens-lyon.fr</xd:author>
33 476 mdecorde
    <xd:copyright>2016, CNRS / ICAR (Équipe CACTUS)</xd:copyright>
34 476 mdecorde
  </xd:doc>
35 476 mdecorde
36 476 mdecorde
37 476 mdecorde
  <xsl:template match="*" mode="#all">
38 476 mdecorde
    <xsl:copy>
39 476 mdecorde
      <xsl:apply-templates select="*|@*|processing-instruction()|comment()|text()" mode="#current"/>
40 476 mdecorde
    </xsl:copy>
41 476 mdecorde
  </xsl:template>
42 476 mdecorde
43 476 mdecorde
  <xsl:template match="comment()|processing-instruction()|text()|@*">
44 476 mdecorde
    <xsl:copy>
45 476 mdecorde
      <xsl:apply-templates/>
46 476 mdecorde
    </xsl:copy>
47 476 mdecorde
  </xsl:template>
48 476 mdecorde
49 476 mdecorde
  <xsl:template match="comment()|processing-instruction()|@*" mode="expan letters-all
50 476 mdecorde
    letters-alignable characters-alignable">
51 476 mdecorde
    <xsl:copy>
52 476 mdecorde
      <xsl:apply-templates/>
53 476 mdecorde
    </xsl:copy>
54 476 mdecorde
  </xsl:template>
55 476 mdecorde
56 476 mdecorde
  <xsl:variable name="filename">
57 476 mdecorde
    <xsl:analyze-string select="document-uri(.)" regex="^(.*)/([^/]+)\.xml$">
58 476 mdecorde
      <xsl:matching-substring>
59 476 mdecorde
        <xsl:value-of select="replace(regex-group(2),'-c$','')"/>
60 476 mdecorde
      </xsl:matching-substring>
61 476 mdecorde
    </xsl:analyze-string>
62 476 mdecorde
  </xsl:variable>
63 476 mdecorde
64 476 mdecorde
  <xsl:template match="tei:facsimile"/>
65 476 mdecorde
66 476 mdecorde
<xsl:template match="tei:teiCorpus">
67 476 mdecorde
  <TEI xmlns="http://www.tei-c.org/ns/1.0">
68 476 mdecorde
    <text>
69 476 mdecorde
      <!-- on ajoute des attributs utiles pour la création de partitions et de sous-corpus -->
70 476 mdecorde
      <xsl:apply-templates/>
71 476 mdecorde
    </text>
72 476 mdecorde
  </TEI>
73 476 mdecorde
</xsl:template>
74 476 mdecorde
75 476 mdecorde
76 476 mdecorde
<xsl:template match="tei:TEI[ancestor::tei:teiCorpus]">
77 476 mdecorde
<xsl:apply-templates/>
78 476 mdecorde
</xsl:template>
79 476 mdecorde
80 476 mdecorde
  <xsl:template match="tei:teiHeader">
81 476 mdecorde
    <!--<xsl:copy-of select="."/>-->
82 476 mdecorde
  </xsl:template>
83 476 mdecorde
84 476 mdecorde
  <xsl:template match="tei:text[not(ancestor::tei:teiCorpus)]">
85 476 mdecorde
    <xsl:element name="text" namespace="http://www.tei-c.org/ns/1.0">
86 476 mdecorde
      <!-- on ajoute des attributs utiles pour la création de partitions et de sous-corpus -->
87 476 mdecorde
      <xsl:apply-templates select="@*"/>
88 476 mdecorde
     <xsl:apply-templates/>
89 476 mdecorde
    </xsl:element>
90 476 mdecorde
  </xsl:template>
91 476 mdecorde
92 476 mdecorde
  <xsl:template match="tei:text[ancestor::tei:teiCorpus]">
93 476 mdecorde
    <div type="text" id="{$filename}-{count(preceding::tei:text) + 1}" xmlns="http://www.tei-c.org/ns/1.0">
94 476 mdecorde
      <xsl:apply-templates select="@*|node()"/>
95 476 mdecorde
    </div>
96 476 mdecorde
  </xsl:template>
97 476 mdecorde
98 476 mdecorde
<xsl:template match="tei:milestone[@unit='surface']">
99 476 mdecorde
  <pb xmlns="http://www.tei-c.org/ns/1.0" n="{following::tei:pb[1]/@n}" facs="{@facs}" xml:id="{@xml:id}"/>
100 476 mdecorde
</xsl:template>
101 476 mdecorde
102 476 mdecorde
  <xsl:template match="tei:pb">
103 476 mdecorde
    <milestone unit="ms-page" xmlns="http://www.tei-c.org/ns/1.0">
104 476 mdecorde
      <xsl:apply-templates select="@*"/>
105 476 mdecorde
    </milestone>
106 476 mdecorde
  </xsl:template>
107 476 mdecorde
108 476 mdecorde
<xsl:template match="tei:w[not(tei:seg[@type='wp'])]">
109 476 mdecorde
  <xsl:element name="w" namespace="http://www.tei-c.org/ns/1.0">
110 476 mdecorde
    <xsl:apply-templates select="@*"/>
111 476 mdecorde
    <xsl:attribute name="expan"><xsl:apply-templates mode="expan" select="descendant::tei:c"/></xsl:attribute>
112 476 mdecorde
    <xsl:attribute name="letters-all"><xsl:apply-templates mode="letters-all" select="descendant::tei:c"/></xsl:attribute>
113 476 mdecorde
    <xsl:attribute name="letters-alignable"><xsl:apply-templates mode="letters-alignable" select="descendant::tei:c"/></xsl:attribute>
114 476 mdecorde
    <xsl:attribute name="characters"><xsl:apply-templates mode="characters-alignable" select="descendant::tei:c"/></xsl:attribute>
115 476 mdecorde
    <xsl:attribute name="abbr-n">
116 476 mdecorde
      <xsl:choose>
117 476 mdecorde
        <xsl:when test="descendant::tei:abbr">
118 476 mdecorde
          <xsl:value-of select="count(descendant::tei:abbr)"/>
119 476 mdecorde
        </xsl:when>
120 476 mdecorde
        <xsl:when test="descendant::tei:expan">
121 476 mdecorde
          <xsl:value-of select="count(descendant::tei:expan)"/>
122 476 mdecorde
        </xsl:when>
123 476 mdecorde
        <xsl:when test="descendant::tei:ex">
124 476 mdecorde
          <xsl:value-of select="count(descendant::tei:ex)"/>
125 476 mdecorde
        </xsl:when>
126 476 mdecorde
        <xsl:otherwise>0</xsl:otherwise>
127 476 mdecorde
      </xsl:choose>
128 476 mdecorde
    </xsl:attribute>
129 476 mdecorde
    <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 476 mdecorde
    <xsl:apply-templates/>
131 476 mdecorde
  </xsl:element>
132 476 mdecorde
</xsl:template>
133 476 mdecorde
134 476 mdecorde
  <xsl:template match="tei:w[tei:seg[@type='wp']]">
135 476 mdecorde
    <xsl:element name="w-lb" namespace="http://www.tei-c.org/ns/1.0">
136 476 mdecorde
      <xsl:apply-templates select="@*"/>
137 476 mdecorde
      <xsl:attribute name="expan"><xsl:apply-templates mode="expan" select="descendant::tei:c"/></xsl:attribute>
138 476 mdecorde
      <xsl:attribute name="letters-all"><xsl:apply-templates mode="letters-all" select="descendant::tei:c"/></xsl:attribute>
139 476 mdecorde
      <xsl:attribute name="letters-alignable"><xsl:apply-templates mode="letters-alignable" select="descendant::tei:c"/></xsl:attribute>
140 476 mdecorde
      <xsl:attribute name="characters"><xsl:apply-templates mode="characters-alignable" select="descendant::tei:c"/></xsl:attribute>
141 476 mdecorde
      <xsl:attribute name="abbr-n">
142 476 mdecorde
        <xsl:choose>
143 476 mdecorde
          <xsl:when test="descendant::tei:abbr">
144 476 mdecorde
            <xsl:value-of select="count(descendant::tei:abbr)"/>
145 476 mdecorde
          </xsl:when>
146 476 mdecorde
          <xsl:when test="descendant::tei:expan">
147 476 mdecorde
            <xsl:value-of select="count(descendant::tei:expan)"/>
148 476 mdecorde
          </xsl:when>
149 476 mdecorde
          <xsl:when test="descendant::tei:ex">
150 476 mdecorde
            <xsl:value-of select="count(descendant::tei:ex)"/>
151 476 mdecorde
          </xsl:when>
152 476 mdecorde
          <xsl:otherwise>0</xsl:otherwise>
153 476 mdecorde
        </xsl:choose>
154 476 mdecorde
      </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 476 mdecorde
      <xsl:apply-templates/>
156 476 mdecorde
    </xsl:element>
157 476 mdecorde
  </xsl:template>
158 476 mdecorde
159 476 mdecorde
  <xsl:template match="tei:seg[@type='wp']">
160 476 mdecorde
    <xsl:element name="w" namespace="http://www.tei-c.org/ns/1.0">
161 476 mdecorde
      <xsl:apply-templates select="@*"/>
162 476 mdecorde
      <xsl:attribute name="expan"><xsl:apply-templates mode="expan" select="descendant::tei:c"/></xsl:attribute>
163 476 mdecorde
      <xsl:attribute name="letters-all"><xsl:apply-templates mode="letters-all" select="descendant::tei:c"/></xsl:attribute>
164 476 mdecorde
      <xsl:attribute name="letters-alignable"><xsl:apply-templates mode="letters-alignable" select="descendant::tei:c"/></xsl:attribute>
165 476 mdecorde
      <xsl:attribute name="characters"><xsl:apply-templates mode="characters-alignable" select="descendant::tei:c"/></xsl:attribute>
166 476 mdecorde
      <xsl:attribute name="abbr-n">
167 476 mdecorde
        <xsl:choose>
168 476 mdecorde
          <xsl:when test="descendant::tei:abbr">
169 476 mdecorde
            <xsl:value-of select="count(descendant::tei:abbr)"/>
170 476 mdecorde
          </xsl:when>
171 476 mdecorde
          <xsl:when test="descendant::tei:expan">
172 476 mdecorde
            <xsl:value-of select="count(descendant::tei:expan)"/>
173 476 mdecorde
          </xsl:when>
174 476 mdecorde
          <xsl:when test="descendant::tei:ex">
175 476 mdecorde
            <xsl:value-of select="count(descendant::tei:ex)"/>
176 476 mdecorde
          </xsl:when>
177 476 mdecorde
          <xsl:otherwise>0</xsl:otherwise>
178 476 mdecorde
        </xsl:choose>
179 476 mdecorde
      </xsl:attribute>
180 476 mdecorde
      <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 476 mdecorde
      <xsl:apply-templates/>
182 476 mdecorde
    </xsl:element>
183 476 mdecorde
  </xsl:template>
184 476 mdecorde
185 476 mdecorde
  <xsl:template match="tei:pc[not(child::tei:reg or @ana='ori:align-no')]">
186 476 mdecorde
    <xsl:element name="w" namespace="http://www.tei-c.org/ns/1.0">
187 476 mdecorde
      <xsl:apply-templates select="@*"/>
188 476 mdecorde
      <xsl:attribute name="type">pc</xsl:attribute>
189 476 mdecorde
      <xsl:attribute name="expan"><xsl:apply-templates select="descendant::tei:c"/></xsl:attribute>
190 476 mdecorde
      <xsl:attribute name="letters-all"/>
191 476 mdecorde
      <xsl:attribute name="letters-alignable"/>
192 476 mdecorde
      <xsl:attribute name="characters"><xsl:apply-templates mode="characters-alignable" select="descendant::tei:c"/></xsl:attribute>
193 476 mdecorde
      <xsl:attribute name="abbr-n">
194 476 mdecorde
        <xsl:value-of select="0"/>
195 476 mdecorde
      </xsl:attribute>
196 476 mdecorde
      <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 476 mdecorde
      <xsl:apply-templates/>
198 476 mdecorde
    </xsl:element>
199 476 mdecorde
  </xsl:template>
200 476 mdecorde
201 476 mdecorde
  <xsl:template match="tei:pc[child::tei:reg or @ana='ori:align-no']">
202 476 mdecorde
    <xsl:comment><xsl:copy-of select="."/></xsl:comment>
203 476 mdecorde
  </xsl:template>
204 476 mdecorde
205 476 mdecorde
  <xsl:template match="tei:choice[tei:abbr]">
206 476 mdecorde
    <xsl:apply-templates select="tei:abbr"/>
207 476 mdecorde
  </xsl:template>
208 476 mdecorde
209 476 mdecorde
  <xsl:template match="tei:choice[tei:abbr]" mode="expan">
210 476 mdecorde
    <xsl:apply-templates select="tei:expan" mode="#current"/>
211 476 mdecorde
  </xsl:template>
212 476 mdecorde
213 476 mdecorde
  <xsl:template match="tei:choice[tei:abbr]" mode="letters-all">
214 476 mdecorde
    <xsl:apply-templates select="tei:expan" mode="#current"/>
215 476 mdecorde
  </xsl:template>
216 476 mdecorde
217 476 mdecorde
  <xsl:template match="tei:choice[tei:abbr]" mode="letters-alignable">
218 476 mdecorde
    <xsl:apply-templates select="tei:expan" mode="#current"/>
219 476 mdecorde
  </xsl:template>
220 476 mdecorde
221 476 mdecorde
  <xsl:template match="tei:choice[tei:abbr]" mode="characters-alignable">
222 476 mdecorde
    <xsl:apply-templates select="tei:abbr" mode="#current"/>
223 476 mdecorde
  </xsl:template>
224 476 mdecorde
225 476 mdecorde
  <xsl:template match="tei:choice[tei:orig]" mode="#all">
226 476 mdecorde
    <xsl:apply-templates select="tei:orig" mode="#current"/>
227 476 mdecorde
  </xsl:template>
228 476 mdecorde
229 476 mdecorde
  <xsl:template match="tei:reg" mode="#all"></xsl:template>
230 476 mdecorde
231 476 mdecorde
  <xsl:template match="tei:orig" mode="#all">
232 476 mdecorde
    <xsl:apply-templates mode="#current"/>
233 476 mdecorde
  </xsl:template>
234 476 mdecorde
235 476 mdecorde
  <xsl:template match="tei:ex" mode="expan">
236 476 mdecorde
    <xsl:text>(</xsl:text>
237 476 mdecorde
    <xsl:value-of select="."/>
238 476 mdecorde
    <xsl:text>)</xsl:text>
239 476 mdecorde
  </xsl:template>
240 476 mdecorde
241 476 mdecorde
  <xsl:template match="tei:ex" mode="letters-all">
242 476 mdecorde
    <xsl:value-of select="."/>
243 476 mdecorde
  </xsl:template>
244 476 mdecorde
245 476 mdecorde
  <xsl:template match="tei:ex" mode="letters-alignable"/>
246 476 mdecorde
247 476 mdecorde
  <xsl:template match="tei:ex" mode="characters-alignable">
248 476 mdecorde
    <xsl:choose>
249 476 mdecorde
      <xsl:when test="matches(.,'^\s*(cum|com|con)\s*$','i')">&#xA76F;</xsl:when>
250 476 mdecorde
      <xsl:when test="matches(.,'^\s*et\s*$','i')">&#x204A;</xsl:when>
251 476 mdecorde
      <xsl:when test="matches(.,'^\sest\s*$','i')">&#x223B;</xsl:when>
252 476 mdecorde
      <xsl:when test="matches(.,'^\s*us\s*$','i')">&#xA770;</xsl:when>
253 476 mdecorde
      <xsl:otherwise/>
254 476 mdecorde
    </xsl:choose>
255 476 mdecorde
  </xsl:template>
256 476 mdecorde
257 476 mdecorde
  <xsl:template match="tei:supplied"></xsl:template>
258 476 mdecorde
259 476 mdecorde
260 476 mdecorde
<xsl:template match="tei:c">
261 476 mdecorde
  <xsl:element name="c" namespace="http://www.tei-c.org/ns/1.0">
262 476 mdecorde
    <xsl:apply-templates select="@*"/>
263 476 mdecorde
    <xsl:attribute name="expan">
264 476 mdecorde
      <xsl:apply-templates select="." mode="expan"/>
265 476 mdecorde
    </xsl:attribute>
266 476 mdecorde
    <xsl:attribute name="letters-all">
267 476 mdecorde
      <xsl:apply-templates select="." mode="letters-all"/>
268 476 mdecorde
    </xsl:attribute>
269 476 mdecorde
    <xsl:attribute name="letters-alignable">
270 476 mdecorde
      <xsl:apply-templates select="." mode="letters-alignable"></xsl:apply-templates>
271 476 mdecorde
    </xsl:attribute>
272 476 mdecorde
    <xsl:attribute name="characters">
273 476 mdecorde
      <xsl:apply-templates mode="characters-alignable"/>
274 476 mdecorde
    </xsl:attribute>
275 476 mdecorde
    <xsl:attribute name="abbr-n">
276 476 mdecorde
      <xsl:choose>
277 476 mdecorde
        <xsl:when test="ancestor::tei:abbr and not(following-sibling::tei:c)">1</xsl:when>
278 476 mdecorde
        <xsl:when test="ancestor::tei:expan and not(following-sibling::tei:c)">1</xsl:when>
279 476 mdecorde
        <!--<xsl:when test="ancestor::tei:ex and not(following-sibling::tei:c)">1</xsl:when>-->
280 476 mdecorde
        <xsl:otherwise>0</xsl:otherwise>
281 476 mdecorde
      </xsl:choose>
282 476 mdecorde
    </xsl:attribute>
283 476 mdecorde
    <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 476 mdecorde
    <xsl:apply-templates/>
285 476 mdecorde
  </xsl:element>
286 476 mdecorde
</xsl:template>
287 476 mdecorde
288 476 mdecorde
  <xsl:template match="tei:c" mode="expan">
289 476 mdecorde
    <xsl:if test="not(@type='am') and not(ancestor::tei:abbr[parent::tei:choice/tei:expan[not(tei:ex)]])">
290 476 mdecorde
      <xsl:apply-templates mode="letters-alignable"/>
291 476 mdecorde
    </xsl:if>
292 476 mdecorde
    <xsl:choose>
293 476 mdecorde
      <xsl:when test="not(following-sibling::tei:c) and ancestor::tei:abbr[parent::tei:choice/tei:expan/tei:ex]">
294 476 mdecorde
        <xsl:text>(</xsl:text>
295 476 mdecorde
        <xsl:value-of select="ancestor::tei:choice/tei:expan/tei:ex"/>
296 476 mdecorde
        <xsl:text>)</xsl:text>
297 476 mdecorde
      </xsl:when>
298 476 mdecorde
      <xsl:when test="not(following-sibling::tei:c) and ancestor::tei:abbr[parent::tei:choice/tei:expan[not(tei:ex)]]">
299 476 mdecorde
        <xsl:text>(</xsl:text>
300 476 mdecorde
        <xsl:value-of select="ancestor::tei:choice/tei:expan"/>
301 476 mdecorde
        <xsl:text>)</xsl:text>
302 476 mdecorde
      </xsl:when>
303 476 mdecorde
      <xsl:when test="not(following-sibling::tei:c) and following-sibling::*[1][self::tei:choice[tei:abbr[not(child::node())]]]">
304 476 mdecorde
        <xsl:text>(</xsl:text>
305 476 mdecorde
        <xsl:value-of select="following-sibling::tei:choice[1]//tei:ex"/>
306 476 mdecorde
        <xsl:text>)</xsl:text>
307 476 mdecorde
      </xsl:when>
308 476 mdecorde
      <xsl:otherwise/>
309 476 mdecorde
    </xsl:choose>
310 476 mdecorde
  </xsl:template>
311 476 mdecorde
312 476 mdecorde
  <xsl:template match="tei:c" mode="letters-all">
313 476 mdecorde
    <xsl:if test="not(@type='am') and not(ancestor::tei:abbr[parent::tei:choice/tei:expan[not(tei:ex)]])">
314 476 mdecorde
      <xsl:apply-templates mode="letters-alignable"/>
315 476 mdecorde
    </xsl:if>
316 476 mdecorde
    <xsl:choose>
317 476 mdecorde
      <xsl:when test="not(following-sibling::tei:c) and ancestor::tei:abbr[parent::tei:choice/tei:expan/tei:ex]">
318 476 mdecorde
        <xsl:value-of select="ancestor::tei:choice/tei:expan/tei:ex"/>
319 476 mdecorde
      </xsl:when>
320 476 mdecorde
      <xsl:when test="not(following-sibling::tei:c) and ancestor::tei:abbr[parent::tei:choice/tei:expan[not(tei:ex)]]">
321 476 mdecorde
        <xsl:value-of select="ancestor::tei:choice/tei:expan"/>
322 476 mdecorde
      </xsl:when>
323 476 mdecorde
      <xsl:when test="not(following-sibling::tei:c) and following-sibling::*[1][self::tei:choice[tei:abbr[not(child::node())]]]">
324 476 mdecorde
        <xsl:value-of select="following-sibling::tei:choice[1]//tei:ex"/>
325 476 mdecorde
      </xsl:when>
326 476 mdecorde
      <xsl:otherwise/>
327 476 mdecorde
    </xsl:choose>
328 476 mdecorde
  </xsl:template>
329 476 mdecorde
330 476 mdecorde
  <xsl:template match="tei:c" mode="letters-alignable">
331 476 mdecorde
    <xsl:choose>
332 476 mdecorde
      <xsl:when test="@type='am' and not(ancestor::tei:abbr[parent::tei:choice/tei:expan[not(tei:ex)]])"/>
333 476 mdecorde
      <xsl:otherwise><xsl:apply-templates mode="letters-alignable"/></xsl:otherwise>
334 476 mdecorde
    </xsl:choose>
335 476 mdecorde
  </xsl:template>
336 476 mdecorde
337 476 mdecorde
  <xsl:template match="tei:c" mode="characters-alignable">
338 476 mdecorde
    <xsl:apply-templates mode="characters-alignable"/>
339 476 mdecorde
  </xsl:template>
340 476 mdecorde
341 476 mdecorde
  <xsl:template match="tei:g[@type='am']" mode="letters-alignable letters-all"></xsl:template>
342 476 mdecorde
343 476 mdecorde
  <xsl:template match="tei:g[@type='am' and matches(.,'\p{M}')]" mode="characters-alignable"></xsl:template>
344 476 mdecorde
345 476 mdecorde
346 476 mdecorde
<!--  <xsl:template match="tei:w//text()" mode="letters-alignable characters-alignable">
347 476 mdecorde
    <xsl:choose>
348 476 mdecorde
      <xsl:when test="ancestor::tei:c">
349 476 mdecorde
        <xsl:analyze-string select="." regex="\p{{M}}">
350 476 mdecorde
          <xsl:matching-substring/>
351 476 mdecorde
          <xsl:non-matching-substring><xsl:value-of select="."/></xsl:non-matching-substring>
352 476 mdecorde
        </xsl:analyze-string>
353 476 mdecorde
      </xsl:when>
354 476 mdecorde
      <xsl:otherwise/>
355 476 mdecorde
    </xsl:choose>
356 476 mdecorde
  </xsl:template>
357 476 mdecorde
-->
358 476 mdecorde
359 476 mdecorde
  <xsl:template match="tei:w//text()" mode="expan letters-all">
360 476 mdecorde
    <xsl:choose>
361 476 mdecorde
      <xsl:when test="ancestor::tei:c">
362 476 mdecorde
        <xsl:value-of select="."></xsl:value-of>
363 476 mdecorde
      </xsl:when>
364 476 mdecorde
      <xsl:otherwise/>
365 476 mdecorde
    </xsl:choose>
366 476 mdecorde
  </xsl:template>
367 476 mdecorde
368 476 mdecorde
369 476 mdecorde
  <xsl:template match="tei:w//text()" mode="characters-alignable">
370 476 mdecorde
    <xsl:choose>
371 476 mdecorde
      <xsl:when test="ancestor::tei:c">
372 476 mdecorde
        <xsl:analyze-string select="." regex="\p{{M}}|\s">
373 476 mdecorde
          <xsl:matching-substring/>
374 476 mdecorde
          <xsl:non-matching-substring><xsl:value-of select="."/></xsl:non-matching-substring>
375 476 mdecorde
        </xsl:analyze-string>
376 476 mdecorde
      </xsl:when>
377 476 mdecorde
      <xsl:otherwise/>
378 476 mdecorde
    </xsl:choose>
379 476 mdecorde
  </xsl:template>
380 476 mdecorde
381 476 mdecorde
  <xsl:template match="tei:w//text()" mode="letters-alignable">
382 476 mdecorde
    <xsl:choose>
383 476 mdecorde
      <xsl:when test="ancestor::tei:c">
384 476 mdecorde
        <xsl:analyze-string select="." regex=".">
385 476 mdecorde
          <xsl:matching-substring>
386 476 mdecorde
            <xsl:choose>
387 476 mdecorde
              <xsl:when test="matches(.,'\p{M}|\s')"></xsl:when>
388 476 mdecorde
              <xsl:when test="matches(.,$alignable-abbreviation-marks)"/>
389 476 mdecorde
              <xsl:when test="matches(.,$modified-letters)">
390 476 mdecorde
                <xsl:call-template name="modified-letters"/>
391 476 mdecorde
              </xsl:when>
392 476 mdecorde
              <xsl:otherwise><xsl:value-of select="."/></xsl:otherwise>
393 476 mdecorde
            </xsl:choose>
394 476 mdecorde
          </xsl:matching-substring>
395 476 mdecorde
        </xsl:analyze-string>
396 476 mdecorde
      </xsl:when>
397 476 mdecorde
      <xsl:otherwise/>
398 476 mdecorde
    </xsl:choose>
399 476 mdecorde
  </xsl:template>
400 476 mdecorde
401 476 mdecorde
  <xsl:variable name="modified-letters">^(&#x0141;|&#x0142;|[&#xA748;-&#xA759;])$</xsl:variable>
402 476 mdecorde
  <xsl:variable name="alignable-abbreviation-marks">^(&amp;|&#x204A;|&#x2079;|&#x223B;|&#xA76F;|&#xA770;|&#xF158;|&#xF1A6;|&#xF1AC;)$</xsl:variable>
403 476 mdecorde
404 476 mdecorde
  <xsl:template name="modified-letters">
405 476 mdecorde
    <xsl:choose>
406 476 mdecorde
      <xsl:when test="matches(.,'&#x0141;|&#xA748;')">L</xsl:when>
407 476 mdecorde
      <xsl:when test="matches(.,'&#x0142;|&#xA749;')">l</xsl:when>
408 476 mdecorde
      <xsl:when test="matches(.,'&#xA750;|&#xA752;|&#xA754;')">P</xsl:when>
409 476 mdecorde
      <xsl:when test="matches(.,'&#xA751;|&#xA753;|&#xA755;')">p</xsl:when>
410 476 mdecorde
      <xsl:when test="matches(.,'&#xA756;|&#xA758;')">Q</xsl:when>
411 476 mdecorde
      <xsl:when test="matches(.,'&#xA757;|&#xA759;')">q</xsl:when>
412 476 mdecorde
      <xsl:otherwise><xsl:value-of select="."/></xsl:otherwise>
413 476 mdecorde
    </xsl:choose>
414 476 mdecorde
  </xsl:template>
415 476 mdecorde
416 476 mdecorde
</xsl:stylesheet>