Revision 2398 tmp/org.txm.oriflamms.rcp/groovy/org/txm/macro/oriflamms/prepare/oriflamms-tokenize-words.xsl

oriflamms-tokenize-words.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
  exclude-result-prefixes="tei edate xd txm" 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
	exclude-result-prefixes="tei edate xd txm" version="2.0">
7 9

  
8
  <xsl:output method="xml" encoding="utf-8" omit-xml-declaration="no" indent="no"/>
9
  
10
  <xd:doc type="stylesheet">
11
    <xd:short>
12
      Cette feuille XSLT permet de pré-tokeniser par mot des fichiers au format
13
      XML-TEI Oriflamms brut
14
    </xd:short>
15
    <xd:detail>
16
      This stylesheet is free software; you can redistribute it and/or
17
      modify it under the terms of the GNU Lesser General Public
18
      License as published by the Free Software Foundation; either
19
      version 3 of the License, or (at your option) any later version.
20
      
21
      This stylesheet is distributed in the hope that it will be useful,
22
      but WITHOUT ANY WARRANTY; without even the implied warranty of
23
      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
24
      Lesser General Public License for more details.
25
      
26
      You should have received a copy of GNU Lesser Public License with
27
      this stylesheet. If not, see http://www.gnu.org/licenses/lgpl.html
28
    </xd:detail>
29
    <xd:author>Alexei Lavrentiev alexei.lavrentev@ens-lyon.fr</xd:author>
30
    <xd:copyright>2014, CNRS / ICAR (Équipe CACTUS)</xd:copyright>
31
  </xd:doc>
32
  
33
<!--  <xsl:template match="/">
34
    <xsl:apply-templates/>
35
  </xsl:template>
36
-->  
37
  
38
  <xsl:template match="*">
39
        <xsl:copy>
40
          <xsl:apply-templates select="*|@*|processing-instruction()|comment()|text()"/>
41
        </xsl:copy>
42
  </xsl:template>
10
	<xsl:output method="xml" encoding="utf-8"
11
		omit-xml-declaration="no" indent="no" />
43 12

  
44
  <xsl:template match="comment()|processing-instruction()|text()">
45
    <xsl:copy/>
46
  </xsl:template>
13
	<xd:doc type="stylesheet">
14
		<xd:short>
15
			Cette feuille XSLT permet de pré-tokeniser par mot des fichiers au format
16
			XML-TEI Oriflamms brut
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.
47 23

  
48
  <!-- On supprime les attributs par défaut de la DTD TEI -->
49
  
50
  <xsl:template match="@*">
51
    <xsl:choose>
52
      <xsl:when test="matches(name(.),'^(part|instant|anchored|full)$')"/>
53
      <xsl:otherwise><xsl:copy/></xsl:otherwise>
54
    </xsl:choose>
55
  </xsl:template>
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.
56 28

  
57
<!--  <xsl:template match="tei:teiHeader">    
58
      <xsl:copy-of select="."/>    
59
  </xsl:template>
60
-->
61
  
62
  <xsl:template match="tei:w|tei:pc">
63
    <xsl:copy-of select="."/>
64
  </xsl:template>
65
  
66
  <xsl:template match="tei:text//text()">
67
  <xsl:choose>
68
    <!--<xsl:when test="not(ancestor::tei:text/tei:body/tei:div1/tei:p)"><xsl:copy/></xsl:when>-->
69
    <xsl:when test="matches(.,'^\s*$')"><xsl:copy/></xsl:when>
70
    <xsl:when test="matches(local-name(parent::*),'^(abbr|expan|sic|corr)$')"><xsl:copy/></xsl:when>
71
    <xsl:when test="ancestor::*/@ana[contains(.,'ori:align-no')]"><xsl:copy/></xsl:when>
72
    <xsl:when test="ancestor::tei:note"><xsl:copy/></xsl:when>
73
    <xsl:when test="ancestor::tei:witDetail"><xsl:copy/></xsl:when>
74
    <xsl:when test="parent::tei:hi and matches(.,'\w+') and not(matches(.,'\s')) and not(preceding-sibling::* or following-sibling::*)"><xsl:copy/></xsl:when>
75
    <xsl:when test="parent::tei:am|parent::tei:ex"><xsl:copy/></xsl:when>
76
    <!--<xsl:when test="parent::tei:rdg[not(matches(@wit,'^#?A'))]"><xsl:copy/></xsl:when>-->
77
    <xsl:when test="ancestor::tei:pc|ancestor::tei:w"><xsl:copy/></xsl:when>
78
    <xsl:otherwise>
79
      <xsl:analyze-string select="." regex="\w+|\p{{P}}+|\s+">
80
        <xsl:matching-substring>
81
          <xsl:choose>
82
            <xsl:when test="matches(.,'^\w+$')"><w xmlns="http://www.tei-c.org/ns/1.0"><xsl:value-of select="."/></w></xsl:when>
83
<!--            <xsl:when test="matches(.,'^\p{P}+$')"><orig xmlns="http://www.tei-c.org/ns/1.0"><pc xmlns="http://www.tei-c.org/ns/1.0"><xsl:value-of select="."/></pc></orig></xsl:when>-->
84
            <xsl:when test="matches(.,'^\p{P}+$')"><pc xmlns="http://www.tei-c.org/ns/1.0"><xsl:value-of select="."/></pc></xsl:when>
85
            <xsl:otherwise><xsl:copy/></xsl:otherwise>
86
          </xsl:choose>
87
        </xsl:matching-substring>
88
        <xsl:non-matching-substring>
89
          <xsl:comment>Type de caractère non reconnu</xsl:comment><xsl:copy/>
90
        </xsl:non-matching-substring>
91
      </xsl:analyze-string>
92
    </xsl:otherwise>
93
  </xsl:choose>
94
</xsl:template>
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>2014, CNRS / ICAR (Équipe CACTUS)</xd:copyright>
34
	</xd:doc>
95 35

  
96
<xsl:template match="tei:choice">
97
  <xsl:choose>
98
    <xsl:when test="descendant::tei:pc">
99
      <pc xmlns="http://www.tei-c.org/ns/1.0">
100
        <xsl:apply-templates select="descendant::tei:pc[1]/@*"/>
101
        <xsl:copy>
102
          <xsl:apply-templates/>
103
        </xsl:copy>
104
      </pc>
105
    </xsl:when>
106
    <xsl:when test="descendant::tei:w">
107
      <xsl:copy>
108
        <xsl:apply-templates select="@*"/>
109
        <xsl:apply-templates/>
110
      </xsl:copy>
111
    </xsl:when>
112
    <xsl:when test="ancestor::tei:pc|ancestor::tei:w">
113
      <xsl:copy-of select="."/>
114
    </xsl:when>
115
    <xsl:otherwise><w xmlns="http://www.tei-c.org/ns/1.0"><xsl:copy-of select="."/></w></xsl:otherwise>
116
  </xsl:choose>  
117
</xsl:template>
118
  
119
  
120
  
121
<!--  <xsl:template match="tei:pc[ancestor::tei:choice]">
122
    <xsl:apply-templates/>
123
  </xsl:template>
124
-->
125
  
126
  <xsl:template match="tei:choice/tei:orig[child::tei:pc]|tei:choice/tei:reg[child::tei:pc]">
127
    <xsl:copy>
128
      <xsl:apply-templates select="@*"/>
129
      <xsl:value-of select="normalize-space(.)"/>
130
    </xsl:copy>
131
  </xsl:template>
36
	<!-- <xsl:template match="/"> <xsl:apply-templates/> </xsl:template> -->
132 37

  
38
	<xsl:template match="*">
39
		<xsl:copy>
40
			<xsl:apply-templates
41
				select="*|@*|processing-instruction()|comment()|text()" />
42
		</xsl:copy>
43
	</xsl:template>
133 44

  
134
  <!-- <xsl:template match="tei:hi[matches(.,'\w+') and not(matches(.,'\s')) and not(descendant::tei:w) and not(ancestor::*/@ana[contains(.,'ori:align-no')])]|tei:am|tei:ex"> -->
135
  
136
  <!--<xsl:template match="*[ancestor::tei:text and descendant::text()[matches(.,'\w')] and not(descendant::text()[matches(.,'\S\s|\s\S|\p{P}')])]">-->
137
  
45
	<xsl:template
46
		match="comment()|processing-instruction()|text()">
47
		<xsl:copy />
48
	</xsl:template>
138 49

  
139
  <xsl:template match="*[matches(.,'\w+') 
50
	<!-- On supprime les attributs par défaut de la DTD TEI -->
51

  
52
	<xsl:template match="@*">
53
		<xsl:choose>
54
			<xsl:when
55
				test="matches(name(.),'^(part|instant|anchored|full)$')" />
56
			<xsl:otherwise>
57
				<xsl:copy />
58
			</xsl:otherwise>
59
		</xsl:choose>
60
	</xsl:template>
61

  
62
	<!-- <xsl:template match="tei:teiHeader"> <xsl:copy-of select="."/> </xsl:template> -->
63

  
64
	<xsl:template match="tei:w|tei:pc">
65
		<xsl:copy-of select="." />
66
	</xsl:template>
67

  
68
	<xsl:template match="tei:text//text()">
69
		<xsl:choose>
70
			<!--<xsl:when test="not(ancestor::tei:text/tei:body/tei:div1/tei:p)"><xsl:copy/></xsl:when> -->
71
			<xsl:when test="matches(.,'^\s*$')">
72
				<xsl:copy />
73
			</xsl:when>
74
			<xsl:when
75
				test="matches(local-name(parent::*),'^(abbr|expan|sic|corr)$')">
76
				<xsl:copy />
77
			</xsl:when>
78
			<xsl:when
79
				test="ancestor::*/@ana[contains(.,'ori:align-no')]">
80
				<xsl:copy />
81
			</xsl:when>
82
			<xsl:when test="ancestor::tei:note">
83
				<xsl:copy />
84
			</xsl:when>
85
			<xsl:when test="ancestor::tei:witDetail">
86
				<xsl:copy />
87
			</xsl:when>
88
			<xsl:when
89
				test="parent::tei:hi and matches(.,'\w+') and not(matches(.,'\s')) and not(preceding-sibling::* or following-sibling::*)">
90
				<xsl:copy />
91
			</xsl:when>
92
			<xsl:when test="parent::tei:am|parent::tei:ex">
93
				<xsl:copy />
94
			</xsl:when>
95
			<!--<xsl:when test="parent::tei:rdg[not(matches(@wit,'^#?A'))]"><xsl:copy/></xsl:when> -->
96
			<xsl:when test="ancestor::tei:pc|ancestor::tei:w">
97
				<xsl:copy />
98
			</xsl:when>
99
			<xsl:otherwise>
100
				<xsl:analyze-string select="."
101
					regex="\w+|\p{{P}}+|\s+">
102
					<xsl:matching-substring>
103
						<xsl:choose>
104
							<xsl:when test="matches(.,'^\w+$')">
105
								<w xmlns="http://www.tei-c.org/ns/1.0">
106
									<xsl:value-of select="." />
107
								</w>
108
							</xsl:when>
109
							<!-- <xsl:when test="matches(.,'^\p{P}+$')"><orig xmlns="http://www.tei-c.org/ns/1.0"><pc 
110
								xmlns="http://www.tei-c.org/ns/1.0"><xsl:value-of select="."/></pc></orig></xsl:when> -->
111
							<xsl:when test="matches(.,'^\p{P}+$')">
112
								<pc xmlns="http://www.tei-c.org/ns/1.0">
113
									<xsl:value-of select="." />
114
								</pc>
115
							</xsl:when>
116
							<xsl:otherwise>
117
								<xsl:copy />
118
							</xsl:otherwise>
119
						</xsl:choose>
120
					</xsl:matching-substring>
121
					<xsl:non-matching-substring>
122
						<xsl:comment>
123
							Type de caractère non reconnu
124
						</xsl:comment>
125
						<xsl:copy />
126
					</xsl:non-matching-substring>
127
				</xsl:analyze-string>
128
			</xsl:otherwise>
129
		</xsl:choose>
130
	</xsl:template>
131

  
132
	<xsl:template match="tei:choice">
133
		<xsl:choose>
134
			<xsl:when test="descendant::tei:pc">
135
				<pc xmlns="http://www.tei-c.org/ns/1.0">
136
					<xsl:apply-templates
137
						select="descendant::tei:pc[1]/@*" />
138
					<xsl:copy>
139
						<xsl:apply-templates />
140
					</xsl:copy>
141
				</pc>
142
			</xsl:when>
143
			<xsl:when test="descendant::tei:w">
144
				<xsl:copy>
145
					<xsl:apply-templates select="@*" />
146
					<xsl:apply-templates />
147
				</xsl:copy>
148
			</xsl:when>
149
			<xsl:when test="ancestor::tei:pc|ancestor::tei:w">
150
				<xsl:copy-of select="." />
151
			</xsl:when>
152
			<xsl:otherwise>
153
				<w xmlns="http://www.tei-c.org/ns/1.0">
154
					<xsl:copy-of select="." />
155
				</w>
156
			</xsl:otherwise>
157
		</xsl:choose>
158
	</xsl:template>
159

  
160

  
161

  
162
	<!-- <xsl:template match="tei:pc[ancestor::tei:choice]"> <xsl:apply-templates/> 
163
		</xsl:template> -->
164

  
165
	<xsl:template
166
		match="tei:choice/tei:orig[child::tei:pc]|tei:choice/tei:reg[child::tei:pc]">
167
		<xsl:copy>
168
			<xsl:apply-templates select="@*" />
169
			<xsl:value-of select="normalize-space(.)" />
170
		</xsl:copy>
171
	</xsl:template>
172

  
173

  
174
	<!-- <xsl:template match="tei:hi[matches(.,'\w+') and not(matches(.,'\s')) 
175
		and not(descendant::tei:w) and not(ancestor::*/@ana[contains(.,'ori:align-no')])]|tei:am|tei:ex"> -->
176

  
177
	<!--<xsl:template match="*[ancestor::tei:text and descendant::text()[matches(.,'\w')] 
178
		and not(descendant::text()[matches(.,'\S\s|\s\S|\p{P}')])]"> -->
179

  
180

  
181
	<xsl:template
182
		match="*[matches(.,'\w+') 
140 183
    and ancestor::tei:text 
141 184
    and not(matches(local-name(),'^(front|body|back|div.*|head|closer|p|ab|lg|l|.*[Nn]ame|num|cell|row|q|w|pc|title|term|emph|note|witDetail|foreign|ref|app|lem|rdg)$'))
142 185
    and not(matches(local-name(parent::*),'^(choice|subst|app)$'))
143 186
    and not(descendant::text()[matches(.,'\S\s|\s\S|\p{P}')]) 
144 187
    and not(descendant::tei:w or descendant::tei:pc) 
145 188
    and not(ancestor::*/@ana[contains(.,'ori:align-no')])]|tei:am|tei:ex">
146
  <w xmlns="http://www.tei-c.org/ns/1.0"><xsl:copy-of select="."/></w>
147
</xsl:template>
148
 
149
  <!-- <xsl:template match="*[matches(local-name(),'[Nn]ame$') and not(descendant::text()[matches(.,'\S\s|\s\S|\p{P}')])]"> -->
150
 
151
  
152
  <xsl:template match="*[matches(local-name(),'^.*[Nn]ame$') 
189
		<w xmlns="http://www.tei-c.org/ns/1.0">
190
			<xsl:copy-of select="." />
191
		</w>
192
	</xsl:template>
193

  
194
	<!-- <xsl:template match="*[matches(local-name(),'[Nn]ame$') and not(descendant::text()[matches(.,'\S\s|\s\S|\p{P}')])]"> -->
195

  
196

  
197
	<xsl:template
198
		match="*[matches(local-name(),'^.*[Nn]ame$') 
153 199
    and ancestor::tei:text 
154 200
    and not(descendant::*[matches(local-name(),'^(.*[Nn]ame|w|pc|num|term|ref)$')]) 
155 201
    and not(descendant::text()[matches(.,'\S\s|\s\S|\p{P}')])]">
156
    <xsl:copy>
157
      <xsl:apply-templates select="@*"/>
158
<!--      <xsl:for-each select="child::text()">
159
        <xsl:value-of select="concat('[',.,']')"/>
160
      </xsl:for-each>-->
161
      <w xmlns="http://www.tei-c.org/ns/1.0">
162
        <xsl:for-each select="child::node()">
163
          <xsl:copy-of select="."/>
164
        </xsl:for-each>
165
      </w>
166
    </xsl:copy>
167
    
168
  </xsl:template>
169
  
202
		<xsl:copy>
203
			<xsl:apply-templates select="@*" />
204
			<!-- <xsl:for-each select="child::text()"> <xsl:value-of select="concat('[',.,']')"/> 
205
				</xsl:for-each> -->
206
			<w xmlns="http://www.tei-c.org/ns/1.0">
207
				<xsl:for-each select="child::node()">
208
					<xsl:copy-of select="." />
209
				</xsl:for-each>
210
			</w>
211
		</xsl:copy>
170 212

  
171
  <!--<xsl:template match="tei:sic[not(parent::tei:choice or descendant::tei:w or ancestor::*/@ana[contains(.,'ori:align-no')])]|tei:corr[not(parent::tei:choice or descendant::tei:w or ancestor::*/@ana[contains(.,'ori:align-no')])]">
172
  <w xmlns="http://www.tei-c.org/ns/1.0"><xsl:copy-of select="."/></w>
173
</xsl:template>-->
213
	</xsl:template>
174 214

  
215

  
216
	<!--<xsl:template match="tei:sic[not(parent::tei:choice or descendant::tei:w 
217
		or ancestor::*/@ana[contains(.,'ori:align-no')])]|tei:corr[not(parent::tei:choice 
218
		or descendant::tei:w or ancestor::*/@ana[contains(.,'ori:align-no')])]"> 
219
		<w xmlns="http://www.tei-c.org/ns/1.0"><xsl:copy-of select="."/></w> </xsl:template> -->
220

  
175 221
</xsl:stylesheet>

Also available in: Unified diff