Hello,
passer un namespace en paramètre est possible, ce qui permet de rendre la gestion du namespace dynamique.
... Mais... L'idée de "namespace dynamique" n'est pas très maline.
Le principe du namespace, sa raison d'être, c'est qu'il ne peut pas être dynamique. C'est pour ça qu'il existe. Si on voulait du dynamique, il n'y aurait pas de namespace.
... Mais ça, bien sûr, ce n'est pas tout le monde qui le sait dans l'informatique. Et donc il existe des gens qui ont fait l'erreur de faire des formats XML qui ont "parfois ce namespace-ci et parfois ce namespace-là." Ces gens-là ne comprenaient pas ce qu'ils faisaient, mais ça existe, on est bien d'accord.
Dans ce cas-là la réponse la plus logique n'est pas de chercher quel est le namespace qui a été utilisé et s'en servir, la réponse est d'ignorer complètement le namespace parce qu'il a été mal utilisé et que le mieux serait qu'il n'y en ait pas.
La méthode est de se baser sur le local-name des éléments. Il s'agit de leur nom, sans le namespace associé.
On peut s'en servir des manières suivantes :
<xsl:when test="local-name() = 'GetCoverage'">
(attention c'est une string, donc entre ' et ' ou entre " et ". Ça ne marche pas avec GetCoverage sans quotes, qui récupère un élément et non pas le nom de cet élément.)
<xsl:template match="*[local-name() = 'GetCoverage']">
Partager