Statistics
| Revision:

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

History | View | Annotate | Download (9.2 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="yes"/>
12
  
13
  <xd:doc type="stylesheet">
14
    <xd:short>
15
      Cette feuille permet de convertir la transcription tokénisée 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:variable name="filename">
37
    <xsl:analyze-string select="document-uri(.)" regex="^(.*)/([^/]+)\.[^/]+$">
38
      <xsl:matching-substring>
39
        <xsl:value-of select="regex-group(2)"/>
40
      </xsl:matching-substring>
41
    </xsl:analyze-string>
42
  </xsl:variable>
43

    
44

    
45
  <xsl:strip-space elements="*"/>
46
  <xsl:template match="/">
47
    <xsl:apply-templates/>
48
  </xsl:template>
49
  
50
  
51
  <xsl:template match="*">
52
        <xsl:copy>
53
          <xsl:apply-templates select="@*"/>
54
          <xsl:apply-templates select="*|processing-instruction()|comment()|text()"/>
55
        </xsl:copy>
56
  </xsl:template>
57

    
58
  <xsl:template match="comment()|text()">
59
    <xsl:copy/>
60
  </xsl:template>
61
  
62
  <xsl:template match="processing-instruction()"/>
63

    
64
  <!-- On supprime les attributs par défaut de la DTD TEI -->
65
  
66
  <xsl:template match="@*">
67
    <xsl:choose>
68
      <xsl:when test="matches(name(.),'^(part|instant|anchored|full)$')"/>
69
<!--      <xsl:when test="matches(name(.),'rend')">
70
        <xsl:choose>
71
          <xsl:when test="matches(.,'^aggl$')"><xsl:attribute name="rend">space-after(none)</xsl:attribute></xsl:when>
72
          <xsl:otherwise><xsl:copy/></xsl:otherwise>
73
        </xsl:choose>
74
      </xsl:when>-->
75
      <xsl:otherwise><xsl:copy/></xsl:otherwise>
76
    </xsl:choose>
77
  </xsl:template>
78

    
79
  <xsl:template match="tei:teiHeader">    
80
      <xsl:copy>
81
        <xsl:apply-templates select="@*"/>
82
        <xsl:apply-templates/>
83
      </xsl:copy>    
84
  </xsl:template>
85
    
86

    
87
<xsl:template match="tei:revisionDesc">
88
  <xsl:copy>
89
  <xsl:apply-templates select="@*"/>
90
    <change xmlns="http://www.tei-c.org/ns/1.0" when="2007-01-01" who="#DS">Publication du document original</change>
91
    <!-- information récupérée à partir de /TEI/text[1]/front[1]/titlePage[1]/docDate[1] -->
92
    <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>
93
  <xsl:apply-templates/>
94
  </xsl:copy>
95
</xsl:template>
96
  
97
  <xsl:template match="tei:encodingDesc">
98
    <xsl:copy>
99
      <xsl:apply-templates select="@*"/>
100
      <xsl:apply-templates/>
101
      <xsl:if test="not(//tei:prefixDef[@ident='ori'])">
102
        <listPrefixDef xmlns="http://www.tei-c.org/ns/1.0">
103
          <prefixDef xmlns="http://www.tei-c.org/ns/1.0" ident="ori" 
104
            matchPattern="([a-z]+)" 
105
            replacementPattern="oriflamms-annotation-scheme.xml#$1">
106
            <p>In the context of this project, private URIs with the prefix
107
              "ori" point to <gi>interp</gi> elements in the project's
108
              oriflamms-annotation-scheme.xml file.
109
            </p>
110
          </prefixDef>
111
        </listPrefixDef>
112
      </xsl:if>
113
    </xsl:copy>
114
  </xsl:template>
115

    
116
<!-- On restructure le document pour avoir un TEI par charte -->
117
  
118
  <!-- TEI devient teiCorpus -->
119
  
120
  <xsl:template match="tei:TEI">
121
    <xsl:element name="teiCorpus" xmlns="http://www.tei-c.org/ns/1.0">
122
      <xsl:apply-templates select="@*"/>
123
      <xsl:apply-templates select="tei:teiHeader"/>
124
      <facsimile xmlns="http://www.tei-c.org/ns/1.0"><xsl:apply-templates select="tei:facsimile"/></facsimile>
125
      <xsl:apply-templates select="tei:text"/>
126
    </xsl:element>
127
  </xsl:template>
128

    
129
<xsl:template match="tei:facsimile">
130
  <xsl:apply-templates/>
131
</xsl:template>
132
  
133
  
134
  <!-- on supprime l'élément text de niveau 1 et travaille directement sur le niveau 2 (l'élément group intermédiaire disparait)-->
135
  
136
  <xsl:template match="tei:TEI/tei:text">
137
    <xsl:apply-templates select="descendant::tei:text"/>
138
  </xsl:template>
139

    
140
  <xsl:template match="tei:text//tei:text[descendant::*[@facs]]">
141
    
142
    <TEI xmlns="http://www.tei-c.org/ns/1.0">
143
      <teiHeader xmlns="http://www.tei-c.org/ns/1.0">
144
        <fileDesc xmlns="http://www.tei-c.org/ns/1.0">
145
          <titleStmt xmlns="http://www.tei-c.org/ns/1.0">
146
            <title xmlns="http://www.tei-c.org/ns/1.0"><xsl:text>Acte original </xsl:text>
147
              <xsl:value-of select="substring-after(preceding-sibling::comment()[contains(.,'acte original')][1],'acte original ')"/></title>
148
            <author xmlns="http://www.tei-c.org/ns/1.0"><xsl:value-of select="descendant::tei:docAuthor"/></author>
149
          </titleStmt>
150
          <publicationStmt xmlns="http://www.tei-c.org/ns/1.0">
151
            <p xmlns="http://www.tei-c.org/ns/1.0">See the header of the teiCorpus</p>
152
          </publicationStmt>
153
          <!-- les éléments listWit et listBibl sont placés dans sourceDesc -->
154
          <sourceDesc xmlns="http://www.tei-c.org/ns/1.0">
155
            <xsl:copy-of select="descendant::tei:listWit"/>
156
            <xsl:copy-of select="descendant::tei:listBibl[1]"></xsl:copy-of>
157
          </sourceDesc>
158
        </fileDesc>
159
        <profileDesc xmlns="http://www.tei-c.org/ns/1.0">
160
          <!-- docDate devient profileDesc/creation/date[@type='documentCreation'] -->
161
          <creation xmlns="http://www.tei-c.org/ns/1.0"><xsl:apply-templates select="descendant::tei:docDate"/></creation>
162
          <!-- argument devient profileDesc/abstract -->
163
          <xsl:apply-templates select="descendant::tei:argument"/>
164
        </profileDesc>
165
      </teiHeader>
166
      <text xmlns="http://www.tei-c.org/ns/1.0">
167
        <xsl:apply-templates select="@*"/>
168
        <xsl:variable name="facsID">
169
          <xsl:value-of select="replace(descendant::*[@facs][1]/@facs,'^#','')"/>
170
        </xsl:variable>
171
        <milestone xmlns="http://www.tei-c.org/ns/1.0" unit="surface">
172
          <xsl:attribute name="xml:id">
173
            <xsl:value-of select="concat('surf_',$filename,'_',translate($facsID,' ()','_--'))"/>
174
          </xsl:attribute>
175
        </milestone>
176
        <xsl:if test="not(descendant::tei:pb[@facs])">
177
          <pb xmlns="http://www.tei-c.org/ns/1.0">
178
            <xsl:attribute name="facs">
179
              <xsl:choose>
180
                <xsl:when test="matches(descendant::*[@facs][1]/@facs,'^#')">
181
                  <xsl:value-of select="//tei:graphic[following-sibling::tei:zone[@xml:id=$facsID]]/@url"/>
182
                  <!--<xsl:value-of select="$facsID"/>-->
183
                </xsl:when>
184
                <xsl:otherwise><xsl:value-of select="descendant::*[@facs][1]/@facs"/></xsl:otherwise>
185
              </xsl:choose>
186
            </xsl:attribute>
187
          </pb>
188
        </xsl:if>
189
        <body xmlns="http://www.tei-c.org/ns/1.0">
190
          <xsl:apply-templates select="descendant::tei:div1"/>
191
        </body>
192
      </text>
193
    </TEI>
194
  </xsl:template>
195
  
196
  <xsl:template match="tei:text//tei:text[not(descendant::*[@facs])]">
197
    <xsl:comment>No facs attribute provided for any element in this text (n="<xsl:value-of select="@n"/>")!</xsl:comment>
198
    <xsl:comment><xsl:copy-of select="."/></xsl:comment>
199
  </xsl:template>
200
  
201
  <xsl:template match="tei:docDate[ancestor::tei:group]">
202
    <date type="documentCreation" xmlns="http://www.tei-c.org/ns/1.0">
203
      <xsl:apply-templates select="@*"/>
204
      <xsl:apply-templates/>
205
    </date>
206
  </xsl:template>
207
  
208
  <xsl:template match="tei:argument">
209
    <abstract xmlns="http://www.tei-c.org/ns/1.0"><xsl:apply-templates/></abstract>
210
  </xsl:template>
211

    
212
  <!-- on ajoute un attribut pour faciliter l'identification des segments à ne pas aligner -->
213

    
214
  <xsl:template match="tei:choice/tei:expan|tei:choice/tei:corr|tei:div1[@type='edition']">
215
    <xsl:copy>
216
      <xsl:apply-templates select="@*"/>
217
      <xsl:attribute name="ana">ori:align-no</xsl:attribute>
218
      <xsl:apply-templates/>
219
    </xsl:copy>
220
  </xsl:template>
221
  
222

    
223
</xsl:stylesheet>