Bonjour à tous,

débutant en xml, je butte sur la transformation suivante: mon fichier xml d'origine, il s'agit d'un exemple de chronologie historique :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
<?xml version="1.0" encoding="ISO-8859-1"?>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
	<title>Chrono</title>
	<meta http-equiv="content-type" content="text/xml" charset="iso-8859-1"/>
</head>
<body>
<!-- Contenu -->
 
<p style="margin-left:2.75pt;tab-stops:41.5pt 72.0pt">
	<a name="RANGE!A1:B12">
		<b>
			<span style="font-size:8.0pt;font-family:Arial; color:#FF9900">-15 000 000 000</span>
		</b>
	</a>
	<b>
		<span style="font-size:8.0pt; font-family:Arial;color:#FF9900">
			<span style="mso-spacerun:yes"></span>
			<PersonName ProductID="LA PREHISTOIRE" st="on">LA PREHISTOIRE</PersonName>
		</span>
	</b>
	<span style="font-size:8.0pt; font-family:Arial;color:fuchsia"/>
</p>
 
<p style="margin-left:2.75pt;tab-stops:41.5pt 72.0pt">
	<b>
		<span style="font-size:8.0pt;font-family:Arial">1994<span style="mso-spacerun:yes"></span></span>
	</b>
	<span style="font-size: 8.0pt;font-family:Arial">23 février Entrée en vigueur de la loi Toubon.</span>
</p>
 
<p style="margin-left:2.75pt;tab-stops:41.5pt 72.0pt">
	<b>
		<span style="font-size:8.0pt;font-family:Arial;color:fuchsia">1994
			<span style="mso-spacerun:yes"></span>
		</span>
	</b>
	<span style="font-size: 8.0pt;font-family:Arial;color:fuchsia">
		le 14 octobre <u>écrivain contemporain</u>, de langue arabe.
	</span>
	<span style="font-size:8.0pt; font-family:Arial"> </span>
</p>
</body>
</html>
Mon objectif est d'obtenir un fichier xml récupérant les contenus textuels intégralement et structuré comme suit avec :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
<chrono>
	<evt>équivalent à un élément p du fichier d'origine
		<date/>se trouve toujours dans le premier élément b de p
		<titre/>capture des 100 premiers caractères (ou moins s'ils sont en nombre inférieur) du contenu textuel de p
		<texte1/> le contenu textuel de p dans son intégralité (sans toutes les balises u, b, span, PersonName bien sur)
	</evt>
</chrono>
Pour ce qui est de mes essais infructueux, outre la création de la transformation je pense avoir de gros soucis de compréhension des chemins de localisation ce qui n'arrange pas l'affaire. Par exemple, je n'ai jamais réussi... :
- A ne renvoyer que le contenu textuel des éléments <u> en bas de l'arborescence sans troubler le reste de la structure on amont ?
- A en faire autant pour <PersonName>, <span> et <b> et ainsi épurer la capture de l'élément <p> comme je le souhaite.
- A aménager avec des xsl:if ou xsl:choose la règle de copy par défaut afin d'affiner la capture des noeuds en même temps (conserver les éléments jusqu'aux <p> mais supprimer ensuite les éléments-fils en profondeur, tout en conservant leur contenu textuel.
- A comprendre les priorités de traitement, certaines règles semblant neutraliser les autres.
...[/LIST]

Un grand merci d'avance pour toute suggestions de transformation réussie sur la base de cet exemple... Et peut-être quelques sources didactiques efficaces sur les chemins de localisation.