-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgetEntities.xsl
95 lines (84 loc) · 3.46 KB
/
getEntities.xsl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
<?xml version="1.0" encoding="UTF-8"?>
<!--
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@Name : getEntities.xsl
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@version : 003
@creaDate : 2013/07/17
@modifDate
@vXslt: 2.0
@autor : Emmanuel Château [email protected]
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@use : Cette XSLT extrait les entités nommées pour préparer les index de l'édition
@knownBugs :
@todo : Travailler en évaluant les entités présentes dans le fichier d'index
@historique :
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@gratefulness :
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-->
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="2.0"
xpath-default-namespace="http://www.tei-c.org/ns/1.0"
xmlns="http://www.tei-c.org/ns/1.0">
<xsl:output indent="yes" method="xml" encoding="UTF-8" />
<xsl:template match="/">
<div>
<div type="gT">
<xsl:apply-templates mode="gT" select="/*/text" />
</div>
<div type="gJ">
<xsl:apply-templates mode="gJ" select="/*/text" />
</div>
<div type="indexLocorum">
<xsl:apply-templates mode="indexLocorum" select="//placeName" />
</div>
</div>
</xsl:template>
<xsl:template match="text()" mode="gT gJ"/>
<xsl:template match="text" mode="gT">
<xsl:call-template name="listeUniqueTriee">
<xsl:with-param name="type" select="'gT'" />
</xsl:call-template>
</xsl:template>
<xsl:template match="text" mode="gJ">
<xsl:call-template name="listeUniqueTriee">
<xsl:with-param name="type" select="'gJ'" />
</xsl:call-template>
</xsl:template>
<xsl:template name="listeUniqueTriee">
<xsl:param name="type"/>
<xsl:for-each-group select="//term[@type = $type ]" group-by="@ref">
<!-- chercher moyen plus efficace -->
<xsl:sort select="@ref" />
<xsl:for-each select="current-group()[1]">
<entry xml:id="{replace( current-grouping-key() , '#' , '' )}">
<form>
<orth>
<xsl:value-of select="current-group()[1]" />
</orth>
</form>
<sense>
<def/>
</sense>
</entry>
</xsl:for-each>
</xsl:for-each-group>
</xsl:template>
<xsl:template match="placeName" mode="indexLocorum">
<xsl:for-each-group select="." group-by="@ref">
<!-- chercher moyen plus efficace -->
<xsl:sort select="@ref" />
<xsl:for-each select="current-group()[1]">
<place xml:id="{replace( current-grouping-key() , '#' , '' )}">
<placeName full="yes">
<!--<xsl:value-of select="current-group()[1]" />-->
<xsl:value-of select="@full" />
</placeName>
<idno type="authBnf">
<xsl:value-of select="@idno" />
</idno>
</place>
</xsl:for-each>
</xsl:for-each-group></xsl:template>
</xsl:stylesheet>