Statistics
| Revision:

root / tmp / org.txm.groovy.core / src / groovy / org / txm / macro / oriflamms / prepare / txm-front-teioriflammsw-xtz.xsl @ 479

History | View | Annotate | Download (12.3 kB)

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