Revision 2398 tmp/org.txm.oriflamms.rcp/res/oriflamms-convert-pontfraud-oriflammsxml.xsl

oriflamms-convert-pontfraud-oriflammsxml.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: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
  xmlns:functx="http://www.functx.com"
10
  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:xd="http://www.pnp-software.com/XSLTdoc"
7
	xmlns:txm="http://textometrie.org/1.0"
8
	xmlns:xi="http://www.w3.org/2001/XInclude"
9
	xmlns:svg="http://www.w3.org/2000/svg"
10
	xmlns:math="http://www.w3.org/1998/Math/MathML"
11
	xmlns:functx="http://www.functx.com" exclude-result-prefixes="#all"
12
	version="2.0">
11 13

  
12
  <xsl:output method="xml" encoding="utf-8" omit-xml-declaration="no" indent="yes"/>
13
  
14
  <xd:doc type="stylesheet">
15
    <xd:short>
16
      Cette feuille permet de convertir l'édition Pontfraud
17
      au format XML-TEI du projet Oriflamms.
18
    </xd:short>
19
    <xd:detail>
20
      This stylesheet is free software; you can redistribute it and/or
21
      modify it under the terms of the GNU Lesser General Public
22
      License as published by the Free Software Foundation; either
23
      version 3 of the License, or (at your option) any later version.
24
      
25
      This stylesheet is distributed in the hope that it will be useful,
26
      but WITHOUT ANY WARRANTY; without even the implied warranty of
27
      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
28
      Lesser General Public License for more details.
29
      
30
      You should have received a copy of GNU Lesser Public License with
31
      this stylesheet. If not, see http://www.gnu.org/licenses/lgpl.html
32
    </xd:detail>
33
    <xd:author>Alexei Lavrentiev alexei.lavrentev@ens-lyon.fr</xd:author>
34
    <xd:copyright>2015, CNRS / ICAR (Équipe CACTUS)</xd:copyright>
35
  </xd:doc>
36
  
37
  <xsl:strip-space elements="*"/>
38
  
39
  <xsl:param name="baseMsSiglum">A</xsl:param>
40
  
41
  <xsl:variable name="baseMsPattern"><xsl:value-of select="concat('^#?',$baseMsSiglum,'| #?',$baseMsSiglum)"/></xsl:variable>
42
  
43
  <xsl:template match="node()">
44
    <!-- Copy the current node -->
45
    <xsl:copy>
46
      <!-- Including any attributes it has and any child nodes -->
47
      <xsl:apply-templates select="@*|node()"/>
48
    </xsl:copy>
49
  </xsl:template>
14
	<xsl:output method="xml" encoding="utf-8"
15
		omit-xml-declaration="no" indent="yes" />
50 16

  
51
  <!-- On supprime les attributs par défaut de la DTD TEI -->
52
  
53
  <xsl:template match="@*">
54
    <xsl:choose>
55
      <xsl:when test="matches(name(.),'^(part|instant|anchored|full)$')"/>
56
      <xsl:otherwise><xsl:copy/></xsl:otherwise>
57
    </xsl:choose>
58
  </xsl:template>
59
  
60
  <xsl:template match="@facs">
61
    <xsl:attribute name="facs">
62
      <xsl:value-of select="replace(.,'\tif$','.png')"/>
17
	<xd:doc type="stylesheet">
18
		<xd:short>
19
			Cette feuille permet de convertir l'édition Pontfraud
20
			au format XML-TEI du projet Oriflamms.
21
		</xd:short>
22
		<xd:detail>
23
			This stylesheet is free software; you can redistribute it and/or
24
			modify it under the terms of the GNU Lesser General Public
25
			License as published by the Free Software Foundation; either
26
			version 3 of the License, or (at your option) any later version.
27

  
28
			This stylesheet is distributed in the hope that it will be useful,
29
			but WITHOUT ANY WARRANTY; without even the implied warranty of
30
			MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
31
			Lesser General Public License for more details.
32

  
33
			You should have received a copy of GNU Lesser Public License with
34
			this stylesheet. If not, see http://www.gnu.org/licenses/lgpl.html
35
		</xd:detail>
36
		<xd:author>Alexei Lavrentiev alexei.lavrentev@ens-lyon.fr</xd:author>
37
		<xd:copyright>2015, CNRS / ICAR (Équipe CACTUS)</xd:copyright>
38
	</xd:doc>
39

  
40
	<xsl:strip-space elements="*" />
41

  
42
	<xsl:param name="baseMsSiglum">
43
		A
44
	</xsl:param>
45

  
46
	<xsl:variable name="baseMsPattern">
47
		<xsl:value-of
48
			select="concat('^#?',$baseMsSiglum,'| #?',$baseMsSiglum)" />
49
	</xsl:variable>
50

  
51
	<xsl:template match="node()">
52
		<!-- Copy the current node -->
53
		<xsl:copy>
54
			<!-- Including any attributes it has and any child nodes -->
55
			<xsl:apply-templates select="@*|node()" />
56
		</xsl:copy>
57
	</xsl:template>
58

  
59
	<!-- On supprime les attributs par défaut de la DTD TEI -->
60

  
61
	<xsl:template match="@*">
62
		<xsl:choose>
63
			<xsl:when
64
				test="matches(name(.),'^(part|instant|anchored|full)$')" />
65
			<xsl:otherwise>
66
				<xsl:copy />
67
			</xsl:otherwise>
68
		</xsl:choose>
69
	</xsl:template>
70

  
71
	<xsl:template match="@facs">
72
		<xsl:attribute name="facs">
73
      <xsl:value-of select="replace(.,'\tif$','.png')" />
63 74
    </xsl:attribute>
64
  </xsl:template>
75
	</xsl:template>
65 76

  
66
  <xsl:template match="tei:teiHeader">    
67
      <xsl:copy>
68
        <xsl:apply-templates select="@*"/>
69
        <xsl:apply-templates/>
70
      </xsl:copy>    
71
  </xsl:template>
72
    
77
	<xsl:template match="tei:teiHeader">
78
		<xsl:copy>
79
			<xsl:apply-templates select="@*" />
80
			<xsl:apply-templates />
81
		</xsl:copy>
82
	</xsl:template>
73 83

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

  
103
<!-- On restructure le document pour avoir un TEI par charte -->
104
  
105
  <!-- TEI devient teiCorpus -->
106
  
107
  <xsl:template match="tei:TEI">
108
    <xsl:element name="teiCorpus" xmlns="http://www.tei-c.org/ns/1.0">
109
      <xsl:apply-templates select="@*"/>
110
      <xsl:apply-templates/>
111
    </xsl:element>
112
  </xsl:template>
85
	<xsl:template match="tei:revisionDesc">
86
		<xsl:copy>
87
			<xsl:apply-templates select="@*" />
88
			<change xmlns="http://www.tei-c.org/ns/1.0" when="2007-01-01"
89
				who="#DS">Publication du document original</change>
90
			<!-- information récupérée à partir de /TEI/text[1]/front[1]/titlePage[1]/docDate[1] -->
91
			<change xmlns="http://www.tei-c.org/ns/1.0"
92
				when="{format-date(current-date(),'[Y]-[M01]-[D01]')}" who="#auto">Conversion
93
				automatique au format XML-TEI-Oriflamms</change>
94
			<xsl:apply-templates />
95
		</xsl:copy>
96
	</xsl:template>
113 97

  
114
  <!-- on supprime l'élément text de niveau 1 et travaille directement sur le niveau 2 (l'élément group intermédiaire disparait)-->
115
  
116
  <xsl:template match="tei:TEI/tei:text">
117
    <xsl:apply-templates select="descendant::tei:text"/>
118
  </xsl:template>
98
	<xsl:template match="tei:encodingDesc">
99
		<xsl:copy>
100
			<xsl:apply-templates select="@*" />
101
			<xsl:apply-templates />
102
			<xsl:if test="not(//tei:prefixDef[@ident='ori'])">
103
				<listPrefixDef xmlns="http://www.tei-c.org/ns/1.0">
104
					<prefixDef xmlns="http://www.tei-c.org/ns/1.0"
105
						ident="ori" matchPattern="([a-z]+)"
106
						replacementPattern="oriflamms-annotation-scheme.xml#$1">
107
						<p>
108
							In the context of this project, private URIs with the prefix
109
							"ori" point to
110
							<gi>interp</gi>
111
							elements in the project's
112
							oriflamms-annotation-scheme.xml file.
113
						</p>
114
					</prefixDef>
115
				</listPrefixDef>
116
			</xsl:if>
117
		</xsl:copy>
118
	</xsl:template>
119 119

  
120
  <xsl:template match="tei:text//tei:text">
121
    
122
    <TEI 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"><xsl:text>Acte original </xsl:text>
127
              <xsl:value-of select="substring-after(preceding-sibling::comment()[contains(.,'acte original')][1],'acte original ')"/></title>
128
            <author xmlns="http://www.tei-c.org/ns/1.0"><xsl:value-of select="descendant::tei:docAuthor"/></author>
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 teiCorpus</p>
132
          </publicationStmt>
133
          <!-- les éléments listWit et listBibl sont placés dans sourceDesc -->
134
          <sourceDesc xmlns="http://www.tei-c.org/ns/1.0">
135
            <xsl:copy-of select="descendant::tei:listWit"/>
136
            <xsl:copy-of select="descendant::tei:listBibl[1]"></xsl:copy-of>
137
          </sourceDesc>
138
        </fileDesc>
139
        <profileDesc xmlns="http://www.tei-c.org/ns/1.0">
140
          <!-- docDate devient profileDesc/creation/date[@type='documentCreation'] -->
141
          <creation xmlns="http://www.tei-c.org/ns/1.0"><xsl:apply-templates select="descendant::tei:docDate"/></creation>
142
          <!-- argument devient profileDesc/abstract -->
143
          <xsl:apply-templates select="descendant::tei:argument"/>
144
        </profileDesc>
145
      </teiHeader>
146
      <text xmlns="http://www.tei-c.org/ns/1.0">
147
        <body xmlns="http://www.tei-c.org/ns/1.0">
148
          <xsl:apply-templates select="descendant::tei:div1"/>
149
        </body>
150
      </text>
151
    </TEI>
152
  </xsl:template>
153
  
154
  <xsl:template match="tei:docDate[ancestor::tei:group]">
155
    <date type="documentCreation" xmlns="http://www.tei-c.org/ns/1.0">
156
      <xsl:apply-templates select="@*"/>
157
      <xsl:apply-templates/>
158
    </date>
159
  </xsl:template>
160
  
161
  <xsl:template match="tei:argument">
162
    <abstract xmlns="http://www.tei-c.org/ns/1.0"><xsl:apply-templates/></abstract>
163
  </xsl:template>
120
	<!-- On restructure le document pour avoir un TEI par charte -->
164 121

  
122
	<!-- TEI devient teiCorpus -->
165 123

  
166
  <xsl:template match="tei:div1[@type='translation']|tei:note">
167
    <xsl:copy>
168
      <xsl:apply-templates select="@*"/>
169
      <xsl:attribute name="ana">ori:align-no</xsl:attribute>
170
      <xsl:apply-templates/>
171
    </xsl:copy>
172
  </xsl:template>
124
	<xsl:template match="tei:TEI">
125
		<xsl:element name="teiCorpus"
126
			xmlns="http://www.tei-c.org/ns/1.0">
127
			<xsl:apply-templates select="@*" />
128
			<xsl:apply-templates />
129
		</xsl:element>
130
	</xsl:template>
173 131

  
132
	<!-- on supprime l'élément text de niveau 1 et travaille directement sur 
133
		le niveau 2 (l'élément group intermédiaire disparait) -->
174 134

  
175
  <!-- on ajoute un attribut pour faciliter l'identification des segments à ne pas aligner -->
176
  
177
  <xsl:template match="tei:choice/tei:expan|tei:choice/tei:corr">
178
    <xsl:copy>
179
      <xsl:apply-templates select="@*"/>
180
      <xsl:attribute name="ana">ori:align-no</xsl:attribute>
181
      <xsl:apply-templates/>
182
    </xsl:copy>
183
  </xsl:template>
184
  
185
  <xsl:template match="tei:rdg[not(matches(@wit,$baseMsPattern))]">
186
    <xsl:copy>
187
      <xsl:apply-templates select="@*"/>
188
      <xsl:attribute name="ana">ori:align-no</xsl:attribute>
189
      <xsl:apply-templates/>
190
    </xsl:copy>
191
  </xsl:template>
135
	<xsl:template match="tei:TEI/tei:text">
136
		<xsl:apply-templates select="descendant::tei:text" />
137
	</xsl:template>
192 138

  
193
<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]]">
194
  <xsl:choose>
195
    <!-- patch d'espace blanc devant les sauts de ligne à l'intérieur de mots -->
196
    <xsl:when test="matches(.,'\s+$')"><xsl:value-of select="replace(.,'\s+$','')"/></xsl:when>
197
    <xsl:otherwise><xsl:copy/></xsl:otherwise>
198
  </xsl:choose>
199
</xsl:template>
139
	<xsl:template match="tei:text//tei:text">
200 140

  
141
		<TEI xmlns="http://www.tei-c.org/ns/1.0">
142
			<teiHeader xmlns="http://www.tei-c.org/ns/1.0">
143
				<fileDesc xmlns="http://www.tei-c.org/ns/1.0">
144
					<titleStmt xmlns="http://www.tei-c.org/ns/1.0">
145
						<title xmlns="http://www.tei-c.org/ns/1.0">
146
							<xsl:text>Acte original </xsl:text>
147
							<xsl:value-of
148
								select="substring-after(preceding-sibling::comment()[contains(.,'acte original')][1],'acte original ')" />
149
						</title>
150
						<author xmlns="http://www.tei-c.org/ns/1.0">
151
							<xsl:value-of select="descendant::tei:docAuthor" />
152
						</author>
153
					</titleStmt>
154
					<publicationStmt
155
						xmlns="http://www.tei-c.org/ns/1.0">
156
						<p xmlns="http://www.tei-c.org/ns/1.0">See the header of the teiCorpus</p>
157
					</publicationStmt>
158
					<!-- les éléments listWit et listBibl sont placés dans sourceDesc -->
159
					<sourceDesc xmlns="http://www.tei-c.org/ns/1.0">
160
						<xsl:copy-of select="descendant::tei:listWit" />
161
						<xsl:copy-of select="descendant::tei:listBibl[1]"></xsl:copy-of>
162
					</sourceDesc>
163
				</fileDesc>
164
				<profileDesc xmlns="http://www.tei-c.org/ns/1.0">
165
					<!-- docDate devient profileDesc/creation/date[@type='documentCreation'] -->
166
					<creation xmlns="http://www.tei-c.org/ns/1.0">
167
						<xsl:apply-templates
168
							select="descendant::tei:docDate" />
169
					</creation>
170
					<!-- argument devient profileDesc/abstract -->
171
					<xsl:apply-templates
172
						select="descendant::tei:argument" />
173
				</profileDesc>
174
			</teiHeader>
175
			<text xmlns="http://www.tei-c.org/ns/1.0">
176
				<body xmlns="http://www.tei-c.org/ns/1.0">
177
					<xsl:apply-templates
178
						select="descendant::tei:div1" />
179
				</body>
180
			</text>
181
		</TEI>
182
	</xsl:template>
183

  
184
	<xsl:template match="tei:docDate[ancestor::tei:group]">
185
		<date type="documentCreation" xmlns="http://www.tei-c.org/ns/1.0">
186
			<xsl:apply-templates select="@*" />
187
			<xsl:apply-templates />
188
		</date>
189
	</xsl:template>
190

  
191
	<xsl:template match="tei:argument">
192
		<abstract xmlns="http://www.tei-c.org/ns/1.0">
193
			<xsl:apply-templates />
194
		</abstract>
195
	</xsl:template>
196

  
197

  
198
	<xsl:template
199
		match="tei:div1[@type='translation']|tei:note">
200
		<xsl:copy>
201
			<xsl:apply-templates select="@*" />
202
			<xsl:attribute name="ana">ori:align-no</xsl:attribute>
203
			<xsl:apply-templates />
204
		</xsl:copy>
205
	</xsl:template>
206

  
207

  
208
	<!-- on ajoute un attribut pour faciliter l'identification des segments 
209
		à ne pas aligner -->
210

  
211
	<xsl:template
212
		match="tei:choice/tei:expan|tei:choice/tei:corr">
213
		<xsl:copy>
214
			<xsl:apply-templates select="@*" />
215
			<xsl:attribute name="ana">ori:align-no</xsl:attribute>
216
			<xsl:apply-templates />
217
		</xsl:copy>
218
	</xsl:template>
219

  
220
	<xsl:template
221
		match="tei:rdg[not(matches(@wit,$baseMsPattern))]">
222
		<xsl:copy>
223
			<xsl:apply-templates select="@*" />
224
			<xsl:attribute name="ana">ori:align-no</xsl:attribute>
225
			<xsl:apply-templates />
226
		</xsl:copy>
227
	</xsl:template>
228

  
229
	<xsl:template
230
		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]]">
231
		<xsl:choose>
232
			<!-- patch d'espace blanc devant les sauts de ligne à l'intérieur de mots -->
233
			<xsl:when test="matches(.,'\s+$')">
234
				<xsl:value-of select="replace(.,'\s+$','')" />
235
			</xsl:when>
236
			<xsl:otherwise>
237
				<xsl:copy />
238
			</xsl:otherwise>
239
		</xsl:choose>
240
	</xsl:template>
241

  
201 242
</xsl:stylesheet>

Also available in: Unified diff