IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

XML/XSL et SOAP Discussion :

Xml xsl javascript problème d'affichage de liste


Sujet :

XML/XSL et SOAP

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Collégien
    Inscrit en
    Novembre 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Suisse

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Novembre 2015
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Xml xsl javascript problème d'affichage de liste
    Bonjour tout le monde,

    Je n'arrive pas a intégrer et afficher dans mon document html avec du javascript, mon formulaire avec la liste des mes acteurs qui sont dans le xsl. Je ne connais pas le nombre d'acteur à l'avance. J'aimerais "juste" afficher mon formulaire dans le document html.

    J'epsère que j'aurais ét assez claire.

    Merci d'avance pour votre aide

    Bonne soirée

    voici un extrait de mon document xml
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
    <?xml version="1.0" encoding="utf-8" standalone="no"?>
    <?xml-stylesheet type="text/xsl" href="listeacteurs.xsl"?>
    <cinema>
    <acteurs>
    		<acteur id="Acteur1">
    			<nom>Firth</nom>
    			<prenom>  Colin </prenom>
    			<nationalites>
    			<nationalite>Britannique</nationalite>
    			</nationalites>
    			<sexe>masculin</sexe>
    			<date_de_naissance>10.09.1960</date_de_naissance>
    			<ses_films>
    				<filmref idref="Film1"/>
    			</ses_films>
    			<ses_roles>
    				<roleref idref="King_1R "/>
    			</ses_roles>
    		</acteur>
    		<acteur id="Acteur2">
    			<nom> Leroy Jackson </nom>
    			<prenom>Samuel</prenom>
    			<nationalites>
    			<nationalite>American</nationalite>
    			</nationalites>
    			<sexe>masculin</sexe>
    			<date_de_naissance>21.12.1948</date_de_naissance>
    			<ses_films>
    				<filmref idref="Film1"/>
    			</ses_films>
    			<ses_roles>
    				<roleref idref="King_2R"/>
    			</ses_roles>
    		</acteur>
    		<acteur id="Acteur3">
    			<nom> Egerton  </nom>
    			<prenom>Taron</prenom>
    			<nationalites>
    			<nationalite>Britannique</nationalite>
    			</nationalites>
    			<sexe>masculin</sexe>
    			<date_de_naissance>10.11.1989</date_de_naissance>
    			<ses_films>
    				<filmref idref="Film1"/>
    			</ses_films>
    			<ses_roles>
    				<roleref idref="King_3R"/>
    			</ses_roles>
    		</acteur>
    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
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:template match="/">
     		<html><head>
    		</head>
    		<body style="font-family:Verdana; font-size:12pt; color:black">	
    		<div class ="conteneur">
    			<xsl:apply-templates />
    		</div>	
    		 </body></html>
    	</xsl:template>
    <xsl:template match="acteurs">
    	<div class="acteurs">
    	<form>
    		<select name="nomacteur" size="1">
    			<xsl:for-each select="acteur">
    				<option><xsl:value-of select="nom"/> <xsl:value-of select=" prenom"/></option>
    			</xsl:for-each>
    		</select>
    	</form>
    	</div>
    	</xsl:template>
    </xsl:stylesheet>
    javascript
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    	<script language="javascript">
    		function loadXML(filename){
    			var xmlDoc;
    			try
    			{
    				if (document.implementation && document.implementation.createDocument) {
    					xmlDoc=document.implementation.createDocument('','',null);
    					xmlDoc.load(filename);
    				} else if (window.ActiveXObject) {
    					try {
    						xmlDoc=new ActiveXObject("Msxml2.XMLDOM");
    					} catch(e) {
    						xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
    					}
    					xmlDoc.async = false;
    					xmlDoc.load(filename);
    				} 
    			} catch(e) {
    					return e;
    			}
    			return xmlDoc;
    		}
     
     
     		function transform(xmlDOM,xslDOM, idImmersion){
     			var zoneImmersion = document.getElementById(idImmersion);
     			try {
     				if (window.XSLTProcessor) {
    					var fragmentXML;
    					var xsltProcessor = new XSLTProcessor();
    					xsltProcessor.importStylesheet(xslDOM);
    					fragmentXML=xsltProcessor.transformToFragment(xmlDOM, document);
    					Zonecontenu = zoneImmersion.childNodes[0];
    					zoneImmersion.removeChild(Zonecontenu); 
    					zoneImmersion.appendChild(fragmentXML);
    				} else if (window.ActiveXObject) {
    					zoneImmersion.innerHTML='';
    					zoneImmersion.innerHTML = xmlDOM.transformNode(xslDOM);
    				}
    			} catch(e) {
    				return e;
    			}
    		}
     
    		function adaptXSL_transform(){
     
    			//TESTS SUR LA DETECTION DES ELEMENTS XSL
    			var monTemplate = monxsl.getElementsByTagName("xsl:template")[1];
    			var monTemplateName =monTemplate.nodeName;
    			var x = monxsl.getElementsByTagName("xsl:template")[1].getAttribute("match");
    			alert("mon template s'appelle :"+monTemplateName+" et son template correspond à "+x);
     
    			//EXTRACTION DES VARIABLES DANS LE XSL
    			// RECUPERATION DES VALEURS DE MON XSL
    			var mesVariables = monTemplate.getElementsByTagName("xsl:for-each");
     
    		}
    		// MES FICHIER XML ET XSL
    		var monxml = loadXML("listeacteurs.xml");
    		var monxsl = loadXML("listeacteurs.xsl");
    		</script>

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Hello,

    Et, hum, il sert à quoi le XSLT, et tu en fais quoi du JavaScript ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Collégien
    Inscrit en
    Novembre 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Suisse

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Novembre 2015
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Dans un premier temps, le xslt sert à mettre en forme mes différentes données xml , et ensuite je récupères les différents formulaires, un formulaire= un fichier xslt= un include dans mon javascript, dans l'exemple, j'en ai qu'un. Ensuite je devrais avec le javascript modifier des variables d'xpath. Mais bon c'est une musique d'avenir pour le moment j'essaie juste de lire un fichier xslt et d'afficher les données avec du javascript dasn un document html. Pourquoi passer par du xlst alors que je pourrais directement lire les données du xml. La raison est simple, c'est une obligation. J'espère que j'ai pu répondre à tes questions.

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Ben pas vraiment, c'est quoi un include ? Je t'ai demandé ce que tu en faisais de ce JavaScript, ça devrait pas être difficile à montrer.

    Pour le reste, en tant qu'ingénieur logiciel, je ne peux pas vraiment accepter sans broncher qu'on me dise "c'est simple, c'est obligé." Mais après tout c'est ton problème. J'espère juste que tu ne fais pas d'illusion : certains navigateurs peuvent faire du XSLT et les autres non.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre émérite Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Points : 2 736
    Points
    2 736
    Par défaut
    [0] D'abord, si vous voulez mettre un élément select dedans une forme pour but de passer la valeur séléctionnée vers le serveur, il faut mettre aussi l'attribut value dans les options pour qu'il marche pour tous les navigateurs.
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    		<select name="nomacteur" size="1">
    			<xsl:for-each select="acteur">
    				<!--
    				<option><xsl:value-of select="nom"/> <xsl:value-of select=" prenom"/></option>
    				-->
    				<option value="{concat(nom,' ',prenom)}"><xsl:value-of select="concat(nom,' ',prenom)" /></option>
    			</xsl:for-each>
    		</select>
    [1]
    Je n'arrive pas a intégrer et afficher dans mon document html avec du javascript ...
    [1.1] Bien, si vous voulez intégrer ou passer les fonctions javascript vers le côté client, il vous faut d'abord spécifier dans le xslt la méthode de output. Rajoutez ceci comme enfant immédiate de xsl:stylesheet.
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:output method="html" omit-xml-declaration="yes" encoding="utf-8" />
    [1.2] Et puis, isolez les fonctions (attention sans la balise script, ouverture ou fermature) dans un fichier, dit interactive.js par exemple, dans le même répertoire que le xslt.
    [1.3] Puis, rajouter une réference au fichier dans le xslt.
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    		<html><head>
    		<script type="text/javascript" src="interactive.js"></script>
    		</head>
    Dans un sens, l'intégration de javascript s'est faite.

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Collégien
    Inscrit en
    Novembre 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Suisse

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Novembre 2015
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Merci,

    J'entendais pas include var monxsl = loadXML("listeacteurs.xsl");... Le javascript est pour un projet, j'ai malheureusement trop l'habitude de développer en C/C++.

    Pour le moment mon javascript récupère mes 2 variables
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var monxml = loadXML("listeacteurs.xml"); var monxsl = loadXML("listeacteurs.xsl");
    les charges avec la fonction loadXML. la fonction adaptXSL_transform me permet pour le moment d'afficher quelle template mon javascript est entrain de lire puis en dessous j'aimerai récupérer les données de mon formulaire. la fonction transform doit normalement créer un nouveau noeud avec du contenu séléctionner par l'utilisateur. Je ne l'ai pas encore testée

  7. #7
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Hello,

    Si je comprends bien, pour l'instant tu as fait tout ce code, et tu n'as absolument rien vu, rien obtenu à l'aide de ce code. Pas le moindre début de résultat, pas la moindre preuve qu'il fait véritablement quelque chose, ni même ne commence à s'exécuter quelque part.

    Euuh, ce n'est pas comme ça qu'on fait de l'informatique. Il faut progresser par étapes, en commençant par ne faire pratiquement rien mais le faire quand même, puis en ajoutant des fonctionnalités petit à petit en les comprenant à mesure.
    Par exemple, tu dis qu'il faut absolument utiliser XSLT. Bon, ok, comme tu veux, mais tu verras ça plus tard. Pour l'instant tu dois absolument commencer par utiliser juste du XML et trouver le moyen de t'en servir dans ta page. Il sera toujours temps de rendre les choses plus compliquées après.

    Trouve-toi quelques ressources sur comment utiliser du XML dans une page HTML à l'aide de JavaScript, et reviens vers nous quand tu as des questions.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Problème d'affichage de liste entre IE et FireFox
    Par slideveloppeur2006 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 11/07/2006, 11h07
  2. [Perl][XSL][Javascript] problème de chemin
    Par gojira dans le forum Web
    Réponses: 1
    Dernier message: 19/06/2006, 16h32
  3. problème d'affichage de liste combo hors fenêtre
    Par federb.do dans le forum Interfaces Graphiques en Java
    Réponses: 2
    Dernier message: 14/06/2006, 19h40
  4. [XSL/JavaScript]problème d'intégration code JS dans le XSL
    Par Devil666 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 27/04/2005, 16h36
  5. xml-xsl-fo : probleme d'affichage d'un tableau
    Par clindoeil dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 12/12/2003, 12h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo