Statistics
| Revision:

root / tmp / org.txm.oriflamms.rcp / groovy / org / txm / macro / oriflamms / prepare / oriflamms-convert-actesroyaux-oriflammsxml.xsl @ 1094

History | View | Annotate | Download (11.4 kB)

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:xd="http://www.pnp-software.com/XSLTdoc"
5
  xmlns:txm="http://textometrie.org/1.0"
6
  xmlns:xi="http://www.w3.org/2001/XInclude" 
7
  xmlns:svg="http://www.w3.org/2000/svg" 
8
  xmlns:math="http://www.w3.org/1998/Math/MathML"
9
  exclude-result-prefixes="tei edate xd txm xi svg math" version="2.0">
10

    
11
  <xsl:output method="xml" encoding="utf-8" omit-xml-declaration="no" indent="no"/>
12
  
13
  <xd:doc type="stylesheet">
14
    <xd:short>
15
      Cette feuille permet de convertir les transcription des 
16
      Chartes de Fontenay au format XML-TEI du projet Oriflamms.
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>2015, CNRS / ICAR (Équipe CACTUS)</xd:copyright>
34
  </xd:doc>
35
  
36
  <!--<xsl:strip-space elements="*"/>-->
37
  
38
  <xsl:param name="baseMsSiglum">A</xsl:param>
39
  
40
  <xsl:variable name="baseMsPattern"><xsl:value-of select="concat('^#?',$baseMsSiglum,'| #?',$baseMsSiglum)"/></xsl:variable>
41
  
42
  <xsl:template match="*|comment()">
43
    <!-- Copy the current node -->
44
    <xsl:copy>
45
      <!-- Including any attributes it has and any child nodes -->
46
      <xsl:apply-templates select="@*|node()"/>
47
    </xsl:copy>
48
  </xsl:template>
49
  
50
  <xsl:template match="processing-instruction()"/>
51

    
52
  <!-- On supprime les attributs par défaut de la DTD TEI -->
53
  
54
  <xsl:template match="@*">
55
    <xsl:choose>
56
      <xsl:when test="matches(name(.),'^(part|instant|anchored|full)$')"/>
57
      <xsl:otherwise><xsl:copy/></xsl:otherwise>
58
    </xsl:choose>
59
  </xsl:template>
60

    
61
<xsl:template match="@facs">
62
  <xsl:attribute name="facs"><xsl:value-of select="replace(.,'\.tif$','.png','i')"/></xsl:attribute>
63
</xsl:template>
64

    
65
  <xsl:template match="tei:teiHeader">    
66
      <xsl:copy>
67
        <xsl:apply-templates select="@*"/>
68
        <xsl:apply-templates/>
69
      </xsl:copy>    
70
  </xsl:template>
71
    
72

    
73
<xsl:template match="tei:revisionDesc">
74
  <xsl:copy>
75
  <xsl:apply-templates select="@*"/>
76
    <change xmlns="http://www.tei-c.org/ns/1.0" when="2007-01-01" who="#DS">Publication du document original</change>
77
    <!-- information récupérée à partir de /TEI/text[1]/front[1]/titlePage[1]/docDate[1] -->
78
    <change xmlns="http://www.tei-c.org/ns/1.0" when="{format-date(current-date(),'[Y]-[M01]-[D01]')}" who="#auto">Conversion automatique au format XML-TEI-Oriflamms</change>
79
  <xsl:apply-templates/>
80
  </xsl:copy>
81
</xsl:template>
82
  
83
  <xsl:template match="tei:encodingDesc">
84
    <xsl:copy>
85
      <xsl:apply-templates select="@*"/>
86
      <xsl:apply-templates/>
87
      <xsl:if test="not(//tei:prefixDef[@ident='ori'])">
88
        <listPrefixDef xmlns="http://www.tei-c.org/ns/1.0">
89
          <prefixDef xmlns="http://www.tei-c.org/ns/1.0" ident="ori" 
90
            matchPattern="([a-z]+)" 
91
            replacementPattern="oriflamms-annotation-scheme.xml#$1">
92
            <p>In the context of this project, private URIs with the prefix
93
              "ori" point to <gi>interp</gi> elements in the project's
94
              oriflamms-annotation-scheme.xml file.
95
            </p>
96
          </prefixDef>
97
        </listPrefixDef>
98
      </xsl:if>
99
    </xsl:copy>
100
  </xsl:template>
101

    
102
<!-- On restructure le document pour avoir un TEI par charte -->
103
  
104
  <!-- TEI devient teiCorpus -->
105
  
106
  <xsl:template match="tei:TEI">
107
    <xsl:element name="teiCorpus" xmlns="http://www.tei-c.org/ns/1.0">
108
      <xsl:apply-templates select="@*"/>
109
      <xsl:apply-templates/>
110
    </xsl:element>
111
  </xsl:template>
112

    
113
  <!-- on supprime l'élément text de niveau 1 et travaille directement sur le niveau 2 (l'élément group intermédiaire disparait)-->
114
  
115
<!--  <xsl:template match="tei:TEI/tei:text">
116
    <xsl:apply-templates select="descendant::tei:text"/>
117
  </xsl:template>-->
118

    
119
 
120
  <xsl:template match="tei:text[descendant::tei:text]">
121
    
122
    <teiCorpus xmlns="http://www.tei-c.org/ns/1.0">
123
      <teiHeader xmlns="http://www.tei-c.org/ns/1.0">
124
        <fileDesc xmlns="http://www.tei-c.org/ns/1.0">
125
          <titleStmt xmlns="http://www.tei-c.org/ns/1.0">
126
            <title xmlns="http://www.tei-c.org/ns/1.0">
127
              <xsl:value-of select="tei:group[1]/tei:head[1]"/>
128
            </title>            
129
          </titleStmt>
130
          <publicationStmt xmlns="http://www.tei-c.org/ns/1.0">
131
            <p xmlns="http://www.tei-c.org/ns/1.0">See the header of the top level teiCorpus</p>
132
          </publicationStmt>
133
          <sourceDesc xmlns="http://www.tei-c.org/ns/1.0">
134
            <p xmlns="http://www.tei-c.org/ns/1.0">See the header of the top level teiCorpus</p>
135
          </sourceDesc>
136
        </fileDesc>
137
        <profileDesc xmlns="http://www.tei-c.org/ns/1.0">
138
          <!-- argument devient profileDesc/abstract -->
139
          <xsl:apply-templates select="descendant::tei:argument[1]"/>
140
        </profileDesc>        
141
      </teiHeader>
142
      <xsl:apply-templates/>
143
    </teiCorpus>
144
  </xsl:template>
145
  
146
  <xsl:template match="tei:text[descendant::tei:text]/tei:front">
147
    <xsl:choose>
148
      <xsl:when test="descendant::tei:div">
149
        <TEI xmlns="http://www.tei-c.org/ns/1.0" ana="ori:align-no">
150
          <teiHeader xmlns="http://www.tei-c.org/ns/1.0">
151
            <fileDesc xmlns="http://www.tei-c.org/ns/1.0">
152
              <titleStmt xmlns="http://www.tei-c.org/ns/1.0">
153
                <title xmlns="http://www.tei-c.org/ns/1.0">
154
                  <xsl:text>Introduction</xsl:text>
155
                </title>
156
              </titleStmt>
157
              <publicationStmt xmlns="http://www.tei-c.org/ns/1.0">
158
                <p xmlns="http://www.tei-c.org/ns/1.0">See the header of the top level teiCorpus</p>
159
              </publicationStmt>
160
              <sourceDesc xmlns="http://www.tei-c.org/ns/1.0">
161
                <p xmlns="http://www.tei-c.org/ns/1.0">See the header of the top level teiCorpus</p>
162
              </sourceDesc>
163
            </fileDesc>
164
          </teiHeader>
165
          <text xmlns="http://www.tei-c.org/ns/1.0">
166
            <body xmlns="http://www.tei-c.org/ns/1.0">
167
              <xsl:apply-templates select="descendant::tei:div"/>
168
            </body>
169
            
170
          </text>
171
        </TEI>
172
      </xsl:when>
173
      <xsl:otherwise>
174
        <xsl:comment><xsl:copy-of select="."/></xsl:comment>
175
      </xsl:otherwise>
176
    </xsl:choose>
177
  </xsl:template>
178

    
179
  <xsl:template match="tei:text//tei:text[not(descendant::tei:text)]">
180
    
181
    <TEI xmlns="http://www.tei-c.org/ns/1.0">
182
      <teiHeader xmlns="http://www.tei-c.org/ns/1.0">
183
        <fileDesc xmlns="http://www.tei-c.org/ns/1.0">
184
          <titleStmt xmlns="http://www.tei-c.org/ns/1.0">
185
            <title xmlns="http://www.tei-c.org/ns/1.0">
186
              <xsl:text>Acte </xsl:text>
187
              <xsl:value-of select="descendant::tei:head[1]"></xsl:value-of>
188
            </title>            
189
          </titleStmt>
190
          <publicationStmt xmlns="http://www.tei-c.org/ns/1.0">
191
            <p xmlns="http://www.tei-c.org/ns/1.0">See the header of the top level teiCorpus</p>
192
          </publicationStmt>
193
          <!-- les éléments listWit et listBibl sont placés dans sourceDesc -->
194
          <sourceDesc xmlns="http://www.tei-c.org/ns/1.0">
195
            <xsl:copy-of select="descendant::tei:listWit"/>
196
            <xsl:copy-of select="descendant::tei:listBibl[1]"></xsl:copy-of>
197
          </sourceDesc>
198
        </fileDesc>
199
        <profileDesc xmlns="http://www.tei-c.org/ns/1.0">
200
          <!-- docDate devient profileDesc/creation/date[@type='documentCreation'] -->
201
          <creation xmlns="http://www.tei-c.org/ns/1.0"><xsl:apply-templates select="descendant::tei:docDate/tei:date"/></creation>
202
          <!-- argument devient profileDesc/abstract -->
203
          <abstract xmlns="http://www.tei-c.org/ns/1.0">
204
            <xsl:apply-templates select="descendant::tei:argument/node()"/>
205
          </abstract>
206
          <textClass xmlns="http://www.tei-c.org/ns/1.0">
207
            <keywords xmlns="http://www.tei-c.org/ns/1.0">
208
              <xsl:copy-of select="descendant::tei:term"></xsl:copy-of>
209
            </keywords>
210
          </textClass>
211
        </profileDesc>
212
      </teiHeader>
213
      <text xmlns="http://www.tei-c.org/ns/1.0">
214
        <xsl:if test="preceding-sibling::*[1][self::tei:milestone]">
215
          <xsl:copy-of select="preceding-sibling::tei:milestone[1]"></xsl:copy-of>
216
        </xsl:if>
217
        <xsl:apply-templates/>
218
      </text>
219
    </TEI>
220
  </xsl:template>
221
  
222
  <xsl:template match="tei:text[not(descendant::tei:text)]/tei:front">
223
  </xsl:template>
224

    
225
<xsl:template match="tei:argument"/>
226
  
227

    
228

    
229
<xsl:template match="tei:group">
230
  <xsl:apply-templates/>
231
</xsl:template>
232
  
233
  <xsl:template match="tei:milestone">
234
    <xsl:choose>
235
      <xsl:when test="parent::tei:group"/>
236
      <xsl:otherwise>
237
        <xsl:copy-of select="."/>
238
      </xsl:otherwise>
239
    </xsl:choose>
240
  </xsl:template>
241

    
242
<xsl:template match="tei:group/tei:head"/>
243

    
244
  <!-- on supprime listWit du corps du texte (cf. l'entête) -->
245
  <xsl:template match="tei:listWit"/>
246

    
247
<!-- on supprime les entêtes et pied de pages (non alignables) -->
248
  
249
  <xsl:template match="tei:fw">
250
    <xsl:comment>fw : <xsl:copy-of select="."/></xsl:comment>
251
  </xsl:template>
252

    
253
  <!-- on ajoute un attribut pour faciliter l'identification des segments à ne pas aligner -->
254
  
255
  <xsl:template match="tei:choice/tei:expan|tei:choice/tei:corr|tei:supplied|tei:note">
256
    <xsl:copy>
257
      <xsl:apply-templates select="@*"/>
258
      <xsl:attribute name="ana">ori:align-no</xsl:attribute>
259
      <xsl:apply-templates/>
260
    </xsl:copy>
261
  </xsl:template>
262
  
263
  <xsl:template match="tei:pb">
264
    <xsl:variable name="facs">
265
      <xsl:value-of select="@facs"/>
266
    </xsl:variable>
267
    <xsl:if test="//tei:zone[@xml:id=substring-after($facs,'#')] and not(preceding::tei:pb[@facs=$facs])">
268
      <milestone xmlns="http://www.tei-c.org/ns/1.0" unit="surface">
269
        <xsl:attribute name="facs">
270
          <xsl:value-of select="//tei:surface[tei:zone[@xml:id=substring-after($facs,'#')]][1]/tei:graphic/@url"/>
271
        </xsl:attribute>
272
      </milestone>
273
    </xsl:if>
274
    <xsl:copy-of select="."/>
275
  </xsl:template>
276
  
277

    
278
<xsl:template match="text()[following-sibling::*[1][self::tei:milestone or self::tei:pb or self::tei:cb or self::tei:lb] and following-sibling::tei:lb[1][@break='no']]">
279
  <xsl:choose>
280
    <!-- patch d'espace blanc devant les sauts de ligne à l'intérieur de mots -->
281
    <xsl:when test="matches(.,'\s+$')"><xsl:value-of select="replace(.,'\s+$','')"/></xsl:when>
282
    <xsl:otherwise><xsl:copy/></xsl:otherwise>
283
  </xsl:choose>
284
</xsl:template>
285

    
286
</xsl:stylesheet>