Bonjour,

Je dispose d'un fichier XML contenant beaucoup de balises, et je veux appliquer un fichier xsl pour en extraire une dizaines de balises.

J'ai trouvé pas mal de choses sur Internet, mais toutes nécessitent de citer les balises dont je ne veux pas.

Est-ce qu'il est possible de dire: je veux garder ces balises (que je cite dans le XSL) et éliminez toutes les autres (sans les citer) ?

la seule façons que j'aie trouvée est celle-ci (mais elle nécessite de citer toutes les balises à éliminer ce qui n'est pas pratique ni évolutif !)

Exemple réduite de fichier xml:

<?xml version="1.0" encoding="ISO-8859-1"?>
<toto>
	<titi>
		<a>aaa</a>
		<b>bbb</b>
		<c>ccc</c>
	</titi>
	<f>
		<d>ddd</d>
	</f>
	<e>eee</e>
</toto>

Fichier xsl:
Code :

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
	<xsl:output 
  		encoding="ISO-8859-15"
  		method="xml"
  		indent="yes" />
 
	<xsl:template match="node() | @*">
		<xsl:copy>
			<xsl:apply-templates select="@* | node()"/>
		</xsl:copy>
	</xsl:template>
 
	<xsl:template match="a">
		<a>
			<xsl:apply-templates select="@* | node()"/>
		</a>
	</xsl:template>
	<xsl:template match="b"/>
	<xsl:template match="c"/>
	<xsl:template match="d"/>
	<xsl:template match="e"/>
	<xsl:template match="f"/>
</xsl:stylesheet>

résultat:

<?xml version="1.0" encoding="ISO-8859-1"?>
<toto>
<titi>
<a>aaa</a>
</titi>
</toto>

Merci de votre aide
Bonjour plapla1

Ta contribution à ce forum n'a généré aucune réaction suite aux dizaines visites des derniers jours. La situation me semble presque ... suspecte.

J'y vais de ma timide constatation : la feuille qui suit fait ce que tu souhaite... enfin je crois.
Suis timidement néophyte et très intéressé par d'éventuelles solutions en provenance d'experts.
D'ailleurs je constate que ton expertise à toi te permet de maintenir l'indentation dans l'extrait de fichier que tu présente. Tu fais comment ?
----------
<?xml version="1.0"?>
<!-- test.xsl -->

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="x">
<html>
<body>
<h1>
<xsl:value-of select="."/>
</h1>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
-------------
<?xml version="1.0"?>
<!-- ce texte XML -->
<x>
<y>
<z>
ceci est entre balises z
</z>
</y>
<z>
Celà aussi
</z>
</x>
--------------------
Le résultat, tel que vu par un navigateur, pour faire court...

ceci est dans z Celà aussi
------------------------

Je te remercie pour ce post et nous souhaite bonne chance.
Modifié par MarXup (15 Feb 2010 - 00:13)
Salut,

MarXup a écrit :
Ta contribution à ce forum n'a généré aucune réaction suite aux dizaines visites des derniers jours. La situation me semble presque ... suspecte.
Alsacréations traite des standards du web et de l'accessibilité. Il se trouve qu'au fil du temps des salons comme XML et Développement web côté serveur (ou encore récemment Hébergement) ont vu le jour mais ça n'est pas le point fort de ce forum et assez peu de personnes lisent ces sujets.

En clair... rien d'anormal. Smiley smile
Modifié par Heyoan (15 Feb 2010 - 10:56)
Vous avez raison, j'avais eu la réponse dans un autre forum et ne l'avais pas postée ici (pas bien çà !)

Voici la solution:

Soit un fichier xml


<?xml version="1.0" encoding="ISO-8859-1"?>
<toto>
	<titi>
		<a>aaa</a>
		<b>bbb</b>
		<c>ccc</c>
	</titi>
	<f>
		<d>ddd</d>
	</f>
	<e>eee</e>
</toto>


dont je ne voudrais garder que la balise <a> et ses balises mères <titi> et <toto>.
Je lui applique le xsl suivant:


<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
 
	<xsl:output 
			encoding="ISO-8859-15"
			method="xml"
			indent="yes" />
		
		
 
	<xsl:template match="toto">
		<toto>
			<xsl:apply-templates/>
		</toto>
	</xsl:template>
	<xsl:template match="titi">
		<titi>
			<xsl:apply-templates/>
		</titi>
	</xsl:template>
		<xsl:template match="a">
				<xsl:copy-of select="."/>
		</xsl:template>
	
	<xsl:template match="text()"/>
	
	</xsl:stylesheet>



et j'obtiens


<?xml version="1.0" encoding="UTF-16"?>
<toto>
<titi>
<a>aaa</a>
</titi>
</toto>