bonjours a tous !!!

le but est de creer un nouveau document xml grâce un a autre xml en xslt
pour cela j'ai besoin de recuperer le nom des balises
comment faire ?
merci
Modifié le 31 Jan 2005 - 12:57
Bonjour ? Smiley sweatdrop Nan ?
Orthographe ? Smiley sweatdrop Nan ?
Règles du forum n°11 en ce qui te concerne. Le but c'est que tu trouves une aide, alors la moindre des choses serait d'être poli et respectueux de ce qui t'aiderons, je pense que tu n'aura aucun mal à comprendre, merci.

Moi ça sera un café avec un sucre, et 250.000 euros, merci au revoir.
Modifié le 27 Jan 2005 - 10:51
@Olivier> assez d'accord avec toi. Cependant, personnellement j'aurais aimé que la personne faisant ce type de remarque respecte également l'orthographe dans son message...
Bon, je te pardonne si tu partages les 250000 boules que tu ne vas pas manquer d'encaisser bientôt.

@medjai94> Ton intervention souffre de 1000 maux. Au delà de son coté cavalier, elle est techniquement bien vague. Alors après nous avoir dit d'où tu viens, où tu vas, dis nous ce que tu veux faire.

Je tente néanmoins une réponse au hasard :
1/ il n'est pas strictement nécessaire en XSLT de connaître le nom des noeuds pour les désigner. On peut utiliser des chemins de localisation Xpath tels que fils, parent, frère...
2/ Sinon la fonction Xpath name() permet d'obtenir le nom d'un noeud.
@xavier> voila ce ke je voudrais faire
voila un ex:
<racine>
<objet>
<nom>Patrik</nom>
</objet>
</racine>

En faite sachant que je ne connais pas d'avance l'arborescence du fichier xml je souhaiterais recuperer le nom de n'importe quelle balise et non son contenue

le but étant de generer quelque soit le xml source un fichier html decrivant la meme structure que l'arbre du xml

peut-etre avec un DOM
mais si c'est possible j'aimerais eviter
merci
Modifié le 27 Jan 2005 - 12:35
a écrit :
je ne connais pas d'avance l'arborescence du fichier xml je souhaiterais recuperer le nom de n'importe quelle balise et non son contenu

Pas de problème : tu parcours l'ensemble de ton document source et tu appliques local-name(.) au noeud courant.
a écrit :
le but étant de generer quelque soit le xml source un fichier html decrivant la meme structure que l'arbre du xml

Je suppose que tu veux par exemple présenter cet arbre dans une structure de <ul><li> imbriqués ?

Dans ce cas tu crées un template récursif pour parcourir l'arbre source. Ce template s'appelle lui même pour les fils du noeud courant. Le template produit 1 noeud <li></li> pour le noeud courant et <ul></ul> pour chaque appel du template.
il me semble avoir testé cela mais sans succée
est ce ke ca serais possible d'avoir un petit exemple ?
cela me sarais tres utile surtout pour le local.name()
le template recursif je y avait deja penser mon seul probleme et d'avoir la balise elle-meme
il me semble que pour faire un locale-name() il faut connaitre le nom de la balise xml

merci !!!
Modifié le 27 Jan 2005 - 14:30
@Xavier, en même temps moi c'est 1 ou 2 fautes d'orthographe faite un peu vite, ce qu'avait fait medjai94, c'était du langage SMS, il y a tout de même une différence.
Merci medjai94 d'avoir corrigé.

Sinon, tant que je suis à la période rabat-joie, tu pourrais utiliser [ code] pour formater ton code, ça sera plus simple pour tout le monde Smiley cligne

Dès que ton problème sera réglé, tu pourras ajouter Smiley resolu en titre de ton sujet en éditant ton premier post, merci Smiley cligne
a écrit :
mon seul probleme et d'avoir la balise elle-meme
il me semble que pour faire un locale-name() il faut connaitre le nom de la balise xml
Pas très logique. D'après toi pour utiliser la fonction qui donne le nom il lui faut lui fournir le nom en paramètre ? En gros les gens qui ont pondu Xpath auraient réinventé l'identité, pas très puissant ni très utile.

Bon voilà de quoi obtenir le nom du noeud courant dans l'arbre résultat :
<xsl:value-of select="local-name(.)"/>
voila le code que je fait par exemple
 <?xml version="1.0"?>

<xsl:stylesheet version="1.0"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

	<xsl:param name="file"></xsl:param>
	<xsl:param name="sitemapURI"></xsl:param>
	<xsl:param name="requestURI"></xsl:param>					

	<xsl:template match="/">
		<html>
			<body>
				<form method="post">					
					<xsl:attribute name="action"><xsl:value-of select="substring-before($requestURI, $sitemapURI)"/>write/<xsl:value-of select="$file"/></xsl:attribute>
										
					<h1><xsl:value-of select="local-name(.)"/></h1>					
					
					<br/><br/>
					<input type="submit" value="Submit" />
					<input type="reset" value="Reset" />					
				</form>
			</body>
		</html>
	</xsl:template>

</xsl:stylesheet>


et le xml c 'est par exemple :

<racine>
	<personne>
		<nom>SFZEG</nom>
		<prenom>ZEGZEGZEGZEGZEGZ</prenom>
	</personne>
</racine>

moi ca me renvoi "page" j'ai pas compris pourquoi ?
je pensais pouvoir mettre dans local-name une variable ou un parametre ou meme position().
merci de me donner un peu de ton temps !!!
Modifié le 27 Jan 2005 - 15:54
a écrit :
moi ca me renvoi "page"
Je ne vois pas du tout ce que tu veux dire.

1/ Je te garantis que local-name(.) marche très bien pour obtenir le nom du noeud courant.

2/ Ton code est très étrange. Je ne vois pas où tu veux en venir.
Tu n'as défini qu'un seul template et qui plus est il ne s'applique qu'à la racine du document source. Autant dire qu'il ne s'applique pas très souvent.
D'un autre coté il vaut mieux qu'il ne s'applique qu'une fois car sinon il n'arrêterait pas de répéter des <html><body><form> ce qui finirait par faire un peu sale.
Merci xavier pour m'avoir aidé j'ai resolu le probleme grace notamment a toi merci beaucoup !!!!!!!
à plus !!!!!!