bonjour à tous ,

Lors d'une transformation xslt d'un document Xml ( en l'occurence Svg Smiley lol )
l'auteur recopie les elements et attributs (définis comme espace de nom par défaut dans le document svg à transformer) dans un espace de nom préfixé

Voici le début de la euille de style :


<?xml version="1.0"?>
<xsl:stylesheet  version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
 xmlns:tb="http://www.treebuilder.de/SVGEXT" >

	<xsl:template match="/">
			<xsl:apply-templates />
	</xsl:template>
	<xsl:template match="svg:*">
		<xsl:copy>
		<xsl:apply-templates select="@*|node()"/>
		</xsl:copy>
	</xsl:template>
	<xsl:template match="@*">
		<xsl:copy/>
	</xsl:template>
	<xsl:template match="tb:rect">
		<rect x="0" y="0" width="50" height="50"/>
	</xsl:template>
	
</xsl:stylesheet>


Je vois bien ce qu'il fait mais je ne comprends pas ce qu'il fait , puisque au départ aucun élément n'est déclaré svg:rect ou svg:circle ...

Mais en appliquent "ce principe" les parties svg incluses dans des éléments d'espace de nom "privé" sont alors affiché ...
Et j'essaie de comprendre pourquoi depuis hier soir Smiley langue

Voilà un exemple relativement simple (dans mon exemple kzone:graphic est une extension de la DTD du svg)

Pourquoi recopier tous les éléments dans une espace préfixé :

<xsl:template match="svg:*">
		<xsl:copy>
		<xsl:apply-templates select="@*|node()"/>
		</xsl:copy>
	</xsl:template>

par contre sans recopier cela le rectangle vert inclus dans kzone:graphic n'est pas afficher Smiley eek

merci de votre aide (en espérant que j'ai été un peu plus clair que d'habitude Smiley confus ) .... qui a dit faut pas rêver Smiley ravi
Modifié par kzone (07 Mar 2007 - 12:56)
merci de ta réponse ...

Est-ce que cela rejoint en fait que dans le fichier xslt le préfixe 'svg'
n'est pas un espace de nom mais un synonyme de ht...www.w3.org/2000/svg
qui peuvent s'appliquer à un Type d'élément (ici tous ceux faisant partie de l'espace svg) ...

j'ai du mal à "visualiser " : pourquoi le meme espace est utilisé préfixé et non préfixé ...
Un préfixe n'est pas un espace de noms, mais est "symbole" d'un espace de noms. Plusieurs préfixes peuvent être associés au même espace de noms. Utiliser l'un ou l'autre de ces préfixes est alors quivalent.

Dans le cas présent l'absence de préfixe (espace de noms par defaut) et le préfixe svg sont associés au même espace de noms ht...www.w3.org/2000/svg.
encore merci ....

pas toujours évident de rentrer dans la syntaxe Xslt et Xpath ... Smiley lol

Bon maintenant il faudrait que j'arrive à faire fonctionner cette transformation sur IE
... mais là c'est comme faire gagner Kasimodo à l'île de la tentation Smiley cligne

La transformation sous IE (6) ne me retourne que le premier rectangle (rouge ), mais je ne connais pas trop ( encore moins ) le processeur Xsl de microsoft ...
Il faut que je fasse de recherches supplémentaires ...

Une bonne adresse !??