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

XSL/XSLT/XPATH XML Discussion :

Récupération d'un bouton radio sélectionné dans un fichier XML


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Inscrit en
    Décembre 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 8
    Par défaut Récupération d'un bouton radio sélectionné dans un fichier XML
    Bonjour,

    Je souhaite personnaliser un formulaire HTML pour récupérer des données saisies au format XML.

    J'arrive à récupérer le contenu d'un TextBox ou d'un CheckBox, mais pas celui d'un bouton radio.

    Exemple qui fonctionne pour mon TextBox :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <xsl:for-each select="myTextBox">
      <input type="text" id="myTextBox">
        <xsl:attribute name="value">
          <xsl:value-of select="." />
        </xsl:attribute>
      </input>
    </xsl:for-each>
    Exemple qui fonctionne pour mon CheckBox :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <xsl:for-each select="myCheckBox">
      <input type="Checkbox" id="myCheckBox">
        <xsl:attribute name="value">
          <xsl:value-of select="." />
        </xsl:attribute>
      </input>
    </xsl:for-each>
    Exemple qui ne fonctionne pas pour mon bouton radio :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <xsl:for-each select="myRadioButton">
      <input type="radio" id="myRadioButton" value="A" checked="checked">
        <xsl:attribute name='value'>
          <xsl:value-of select='.'/>
        </xsl:attribute>
      </input>
      <input type="radio" id="myRadioButton" value="B">
        <xsl:attribute name='value'>
          <xsl:value-of select='.'/>
        </xsl:attribute>
      </input>
    </xsl:for-each>
    J'ai testé différentes syntaxes mais n'en ai trouvé aucune qui fonctionne
    (Je veux simplement récupérer les valeurs "A" ou "B" selon le bouton radio sélectionné)

    Quelqu'un a-t'il un exemple de syntaxe qui devrait fonctionner ?

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 585
    Par défaut
    Hello,

    cela dépend évidemment du XML que tu essaies de transformer.

    Si ça se trouve ce n'est même pas possible, puisque pour des radio buttons il faut connaître toutes les valeurs au choix, et sélectionner seulement celle qui a été choisie. Or tu ne nous as pas montré si ton XML contient ces informations.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre Expert Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <xsl:for-each select="myRadioButton">
      <input type="radio" id="myRadioButton" value="A" checked="checked">
        <xsl:attribute name='value'>
          <xsl:value-of select='.'/>
        </xsl:attribute>
      </input>
      <input type="radio" id="myRadioButton" value="B">
        <xsl:attribute name='value'>
          <xsl:value-of select='.'/>
        </xsl:attribute>
      </input>
    </xsl:for-each>
    Cela ne marche jamais dans tous les cas: on met @value='A' ou le même @value='B', et puis on met xsl:attribute name='value' la suite, c'est interdit et ça veut dire deux attributs de nom value et c'est impossible.

    Et puis, en ce qui concerne @id, ici pour bouton radio ou, d'ailleurs, pour checkbox le même, il vaut mieux de ne pas mettre la même valeur. L'analyseur html le tolère, mais pour le scriptage moderne plus en plus poussé, il vaut mieux respecter l'unicité de @id. Je vais vous montrer comment dans le cas des boutons radio.

    Et puis encore, pour un groupe de boutons radio marche, il faut avoir un indicateur qui dit ils sont dans le même groupe. Et un attribut name remplit le rôle de cet indicateur.

    Prenons un exemple du fragment de xml
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <myRadioGroup group="nomunique">
        <myRadioButton>A</myRadioButton>
        <myRadioButton>B</myRadioButton>
        <myRadioButton>C</myRadioButton>
    </myRadioGroup>

    On peut faire comme ça.
    Code xsl : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <xsl:template match="myRadioGroup">
        <xsl:for-each select="myRadioButton">
            <xsl:variable name="id" select="concat(parent::*/@group, position())" />
            <input type="radio" id="{$id}" name="{parent::*/@group}">
                <xsl:attribute name="value"><xsl:value-of select="normalize-space()" /></xsl:attribute>
                <xsl:if test="normalize-space()='A'">
                    <xsl:attribute name="checked" select="'checked'" />
                </xsl:if>
                <label for="{$id}"><xsl:value-of select="normalize-space()" /></label>
            </input>
        </xsl:for-each>
    </xsl:template>
    Comme ça, on est dans le côté correct même pour le scriptage html bien exigeant et moderne.

  4. #4
    Nouveau membre du Club
    Inscrit en
    Décembre 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 8
    Par défaut
    Pour être plus complet, mon code précédent est dans un fichier xslt :
    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
     
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.0">
      <xsl:output method="html" omit-xml-declaration="yes" standalone="no" />
      <xsl:template match="/">
          <xsl:for-each select="myTextBox">
            <input type="text" id="myTextBox">
              <xsl:attribute name="value">
                <xsl:value-of select="." />
              </xsl:attribute>
            </input>
          </xsl:for-each>
          <xsl:for-each select="myCheckBox">
            <input type="Checkbox" id="myCheckBox">
              <xsl:attribute name="value">
                <xsl:value-of select="." />
              </xsl:attribute>
            </input>
          </xsl:for-each>
          <xsl:for-each select="myRadioButton">
            <input type="radio" id="myRadioButton" value="A" checked="checked">
              <xsl:attribute name='value'>
                <xsl:value-of select='.'/>
              </xsl:attribute>
            </input>
          </xsl:for-each>
          <xsl:for-each select="myRadioButton">
            <input type="radio" id="myRadioButton" value="B">
              <xsl:attribute name='value'>
                <xsl:value-of select='.'/>
              </xsl:attribute>
            </input>
          </xsl:for-each>
        </xsl:for-each>
      </xsl:template>
    </xsl:stylesheet>
    Mon fichier xml ressemble à ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <?xml version="1.0" encoding="utf-8"?>
    <Upload ElementXPath="/Upload[1]">
    <myTextBox ElementXPath="/Upload[1]/myTextBox[1]"></myTextBox>
    <myCheckBox ElementXPath="/Upload[1]/myCheckBox[1]"></myCheckBox >
    <myRadioButton ElementXPath="/Upload[1]/myRadioButton[1]"></myRadioButton>
    </Upload>
    et j'ai également un fichier xsd :
    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
     
    <?xml version="1.0" encoding="utf-8"?>
    <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
      <xs:element name="Upload">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="myTextBox">
              <xs:complexType>
                <xs:simpleContent>
                  <xs:extension base="xs:string">
                    <xs:attribute name="ElementXPath" type="xs:string" />
                  </xs:extension>
                </xs:simpleContent>
              </xs:complexType>
            </xs:element>
            <xs:element name="myCheckBox">
              <xs:complexType>
                <xs:simpleContent>
                  <xs:extension base="xs:string">
                    <xs:attribute name="ElementXPath" type="xs:string" />
                  </xs:extension>
                </xs:simpleContent>
              </xs:complexType>
            </xs:element>
            <xs:element name="myRadioButton">
              <xs:complexType>
                <xs:simpleContent>
                  <xs:extension base="xs:string">
                    <xs:attribute name="ElementXPath" type="xs:string" />
                  </xs:extension>
                </xs:simpleContent>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
          <xs:attribute name="ElementXPath" type="xs:string" />
        </xs:complexType>
      </xs:element>
    </xs:schema>
    Dans ce cas, à quel endroit dois-je mettre la balise xml myRadioGroup ?

  5. #5
    Membre Expert Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Par défaut
    Dans ce cas, à quel endroit dois-je mettre la balise xml myRadioGroup ?
    Que sais-je? Avec ce genre de xml et xslt, même en passant la partie de bouton radio et xsl:for-each outre balance, comment voulez-vous justifier :
    J'arrive à récupérer le contenu d'un TextBox ou d'un CheckBox, ...
    avec un template qui matche '/' qui appelle xsl:for-each myTextBox et on prétend qu'il donne quelque chose ?! C'est fort.

    Ce n'est pas le bon xml, il faut montrer le résultat d'un processus préalable de cet xml si il y en a un tel processus préalable. Malheureusement, je n'ai pas de temps de faire spéculer tout le temps. Non.

  6. #6
    Nouveau membre du Club
    Inscrit en
    Décembre 2006
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 8
    Par défaut
    Ces fichiers sont issus d'une interface développée par Kodak (Interface d'envoi de fichiers de leur logiciel InSite), et permettent de récupérer la valeur d'un textbox renseigné lors de l'envoi de fichiers
    (le fichier xml de base est alors complété du textbox renseigné).

    J'ai juste ajouté un checkbox dans les 3 fichiers et je récupère bien sa valeur true/false dans le fichier xml complété.

    Je comprend la syntaxe XML mais je débute dans les formats XSL/XSD, donc je ne cherche pas à corriger entièrement le code pour qu'il soit parfais,
    mais uniquement ajouter un bouton radio et récupérer sa valeur (je pensais qu'il suffisait d'ajouter un "if test" quelque part et adapter la syntaxe pour mettre les arguments ou il faut).

Discussions similaires

  1. Réponses: 3
    Dernier message: 25/07/2012, 20h22
  2. [PEAR][HTML_QuickForm] Bouton radio sélectionné par défaut
    Par Invité dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 03/06/2010, 10h10
  3. Réponses: 0
    Dernier message: 14/11/2008, 12h35
  4. déterminer le bouton radio sélectionné
    Par Houssem dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 12/04/2007, 06h01
  5. [Debutant] Pb avec récupération valeurs des boutons radio
    Par Jibees dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 28/03/2006, 14h25

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