Rapidement, je transmet un flux XML à l'aide de SOAP. Mon problème est de type XSL et pas Web Service ce qui explique ce post dans ce forum .
Je transforme donc ce flux à l'aide d'un fichier XSL.
Voilà mon entrée XML (simplifiée) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
<web:testA  xmlns:web="http://lien/">
	<Livre>Dune</Livre>
	<Magie>1</Magie>
	<Useless>INUTILE</Useless>
</web:testA>
Le rôle du xsl est de supprimer la balise "Useless", et de renommer la balise "testA" en "test".
Autre chose, le a un namespace qui peut être variable et que l'on ne connaît pas à l'avance, donc pas forcément "web". J'ai donc fait en sorte que mon xslt prenne en compte ce problème.
Mon xsl :
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
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
	xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:plop="http://lien/">
 
	<xsl:output method="xml" encoding="UTF-8" indent="no"
		standalone="no" omit-xml-declaration="yes" />
	<xsl:template match="node() | @*"
		xmlns="http://lien/">
		<xsl:choose>
			<xsl:when test="local-name() = 'testA'">
				<xsl:element name="plop:test">
					<xsl:apply-templates />
				</xsl:element>
			</xsl:when>
			<xsl:when test="local-name() = 'Livre'">
				<xsl:element name="Livre">
					<xsl:apply-templates />
				</xsl:element>
			</xsl:when>
			<xsl:when test="local-name() = 'Magie'">
				<xsl:element name="Magie">
					<xsl:apply-templates />
				</xsl:element>
			</xsl:when>
			<xsl:otherwise>
				<xsl:copy>
					<xsl:apply-templates select="node() | @*" />
				</xsl:copy>
			</xsl:otherwise>
		</xsl:choose>
	</xsl:template>
	<xsl:template match="Useless" />	
</xsl:stylesheet>
Et en sortie j'obtiens :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
<plop:test xmlns:plop="http://lien/">
	<Livre xmlns:="http://lien/">Dune</Livre>
	<Magie xmlns="http://lien/">1</Magie>
 
</plop:test>
Mon problème : Je veux faire disparaître les à côté de "Livre" et "Magie" et quoi que je fasse je n'y arrive pas...
J'aimerai également avoir des avis sur le code du xslt en lui même (notamment pour la gestion du namespace variable).

Merci d'avance pour votre aide !