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 :

XML - Effectuer des choix conditionnels par ceux proposés


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif

    Profil pro
    Inscrit en
    Juin 2007
    Messages
    211
    Détails du profil
    Informations personnelles :
    Âge : 75
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 211
    Billets dans le blog
    1
    Par défaut XML - Effectuer des choix conditionnels par ceux proposés
    Bonjour,
    Plaçons tout de suite mon niveau de programmation : je suis une bille

    J'ai 4 options disponibles : LSeg1, LSeg2, Reason et NbSeg et 3 types de méthodes : Arithmetic, Geometric et Logarithmic.
    Le choix d'une "méthode" conditionne la suite des sélections dans les options :

    Si je sélectionne les méthodes Arithmetic ou Geometric,
    *** 0. Je ne peux utiliser que soit NbSeg soit Reason mais jamais les deux en même temps.

    *** 1. Si je n'utilise pas l'option NbSeg ni l'option Reason, alors je ne peux introduire de valeur que dans 2 options :
    ==> LSeg1 et LSeg2

    *** 2. Si j'utilise l'option Reason, alors je ne peux introduire de valeur que dans 2 options :
    ==> LSeg1 OU BIEN LSeg2

    *** 3. Si j'utilise NbSeg, alors je ne peux introduire de valeur que dans 2 options :
    ==> LSeg1 OU BIEN LSeg2

    Si je sélectionne la méthode Logarithmic,
    *** ==> Je ne peux utiliser que l'option NbSeg".

    Je place dans chacune des options la valeur 0 (0.0 si float) ainsi, si je mets une valeur > 0, je saurai si j'ai introduit une valeur dans l'option.

    J'ai "pondu" le code ci-dessous :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    ...
       <param name="method" type="optiongroup" _gui-text="Series">
            <_option value="Artithmetic">Serie arithmetique</_option>
            <_option value="Geometric">Serie geometrique</_option>
            <_option value="Logarithmic">Serie logarithmique</_option>
        </param>
     
        <param name="LSeg1" type="float" min="0.1" max="10000.0" _gui-text="Longueur du premier segment">"0.0"</param>
        <param name="LSeg2" type="float" min="0.1" max="10000.0" _gui-text="Longueur du dernier segment">"0.0"</param>
        <param name="Reason" type="float" min="0.1" max="10000.0" _gui-text="Raison de la suite">"0.0"</param>
        <param name="NbSeg" type="int" min="1" max="10000" _gui-text="Nombre de Segments">"0"</param>
    ...
    Comment puis-je réaliser ces limitations dans les options ?

    Merci

  2. #2
    Membre Expert
    Avatar de Loceka
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    2 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 2 276
    Par défaut
    Citation Envoyé par Papy Octet Voir le message
    Comment puis-je réaliser ces limitations dans les options ?
    Pas en XML.

    Un fichier XML est un fichier de données uniquement. Dans certains cas il peut servir de fichier de paramétrage mais c'est tout.

    Pour faire un traitement sur les données, il faut passer par un langage de programmation. Donc c'est dans le forum de ce langage que tu devrais poster pour avoir une réponse.

  3. #3
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    En principe, XML c'est pas de la programmation.

    Là le gros problème, c'est que tu nous as pas expliqué de quoi tu parles.

    Je connais pas ce format. C'est quoi ces <param>, ces <_option>, ces name, ces type, ces _gui-text, etc. ? D'où ça vient ? C'est quoi qui utilise ça ?
    Une fois que ce fichier est fait, on le met dans quoi et il sert à quoi ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre très actif

    Profil pro
    Inscrit en
    Juin 2007
    Messages
    211
    Détails du profil
    Informations personnelles :
    Âge : 75
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 211
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Je précise encore que je me trouve dans Inkscape (logiciel de dessin vectoriel) et ses extensions externes. Le fichier XML (et lui seul) sert à collecter des valeurs et à appeler un fichier Python (qui est, lui, l'extension proprement dite) qui travaillera avec les valeurs trouvées dans le fichier XML.

    Dans ce cas-ci, on ne peut pas à proprement parler de programmation. C'est plutôt un affichage conditionnel. L'affichage, l'activation de certains éléments est conditionné par la sélection d'un autre élément.

    Une petite image vaut souvent mieux qu'un long discours.
    Voici ce que j'obtiens jusqu'à présent :

    Dans la 1° partie de la fenêtre (les lignes "Méthode de division", "Longueur maximum de segment (px) et nombre de segments, on se trouve avec l'outil d'origine qui permet d'ajouter des noeuds sur un tracé sélectionné. On y a le choix entre ajouter des noeuds à une distance spécifié les uns des autres, soit ajouter un certain nombre de noeuds (et ici, le code Python qui est appelé par cette application, va effectuer les calculs nécessaires).

    Je veux ajouter la possibilité de répartir les noeuds selon la variation de valeur (la distance entre les noeuds) de type "suite arithmétique, suite géométrique, suite logarithmique. Et pour ce faire, je dois absolument disposer de quelques paramètres mais pas tous car dans ce cas, le calcul des distances n'est pas possible.

    Dans les lignes de code proposées, je prends par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ...
            <_option value="Artithmetic">Serie arithmetique</_option>
    ...
    On retrouve aisément les différents éléments dans l'image. Ce sont des options et 1 click sur un des boutons de sélection désactive les 2 autres (1 parmi 3).

    La ligne de code suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ...
        <param name="LSeg1" type="float" min="0.1" max="10000.0" _gui-text="Longueur du premier segment">"0.0"</param>
    ...
    correspond à la ligne, dans l'image : "Longueur du premier segment" et l'objet que je qualifierai de "liste déroulante" qui contient toutes les valeurs comprises entre "min" et "max" dans le code. Cette "liste" permet de définir avec précision la valeur de cette option.

    Par la suite, avec un click sur le bouton "Appliquer", on appelle une application Python qui va récupérer les valeurs introduites dans les zones de saisies puis effectuer l'ajout des nouveaux noeuds en fonction des choix qui ont été faits par l'utilisateur.

    C'est dans cette fenêtre que les choix conditionnels doivent être faits pour être certain que le code Python exécute bien ce à quoi il est sensé correspondre en fonction des choix qui ont été faits.
    Je veux empêcher d'introduire des valeurs dans les zones de saisie lorsque ce n'est pas nécessaire ou possible.

    J'espère que c'est plus clair ainsi.
    A+

  5. #5
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Je me cite moi-même :

    Citation Envoyé par thelvin Voir le message
    Je connais pas ce format. C'est quoi ces <param>, ces <_option>, ces name, ces type, ces _gui-text, etc. ? D'où ça vient ? C'est quoi qui utilise ça ?
    Une fois que ce fichier est fait, on le met dans quoi et il sert à quoi ?
    On attend toujours.

    Edit : fichier descripteur de fenêtre de dialogue pour les extensions d'Inkscape. Ok. Ça aurait pu être intéressant d'en parler dès la première phrase, à savoir le sujet de la discussion.

    Le mieux serait de poser ce genre de question à la communauté Inkscape, mais je vais voir si je trouve une doc.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre très actif

    Profil pro
    Inscrit en
    Juin 2007
    Messages
    211
    Détails du profil
    Informations personnelles :
    Âge : 75
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 211
    Billets dans le blog
    1
    Par défaut
    Je pense avoir donné les réponses :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        <param name="LSeg1" type="float" min="0.1" max="10000.0" _gui-text="Longueur du premier segment">"0.0"</param>
    <param>...</param> : c'est un des "paramètres" qui peuvent être définis par l'utilisateur pour permettre au programme Python appelé par la suite de travailler en respectant les souhaits, les réglages de l'utilisateur.
    name="LSeg1 : c'est le nom de la variable dans laquelle Python retrouvera la valeur correspondant au paramètre en cours (ici, c'est la valeur qui se trouve en face du "Longueur du premier segment" dans la fenêtre de travail.
    type="float" : la valeur contenue est un float, une valeur décimale.
    min="0.1" et max="10000.0" sont les extrémités de l'échelle des valeurs autorisées pour ce paramètre.
    _gui-texte : c'est le texte explicatif se trouvant à droite de la liste des valeurs.
    >0.0< : c'est la valeur affichée par défaut dans la liste des valeurs.

    La liste des valeurs (comprise en "min" et "max") est une sorte de "liste déroulante" où la valeur affichée évolue, par dixième d'unité entre 0.0 et 10000.0. Une fois la valeur sélectionnée dans la liste, elle sera récupérée par Python lorsqu'il prendra la main pour exécuter l'extension proprement dite.

    Mais le problème ne se situe pas ici.
    Ce que je voudrais réaliser est une activation/désactivation des "param" en fonction de la "méthode de division" choisie.

    A+

  7. #7
    Membre Expert
    Avatar de Loceka
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    2 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 2 276
    Par défaut
    Citation Envoyé par Papy Octet Voir le message
    Je pense avoir donné les réponses :
    programme Python
    C'est donc un problème Python.

    Je le répète une dernière fois (dans ce post malheureusement ) : le XML n'est pas un langage de programmation.

    Donc avec XML il est impossible de:
    • sélectionner une valeur
    • mettre en forme un texte
    • faire des menus déroulant
    • jouer en ligne
    • appeller l'Angleterre
    • ...

  8. #8
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Citation Envoyé par Loceka Voir le message
    C'est donc un problème Python.
    Non, pas vraiment. Comme il s'est décidé à le dire à 14h44, c'est un fichier de description de boîte de dialogues pour extensions Inkscape.
    En gros ça sert à la même chose que XForms mais Inkscape a créé le sien (probablement pour aller plus vite et faire plus simple.)

    Ce n'est pas spécialement une question Python, mais ce n'est pas non plus une question générale XML. C'est juste une question Inkscape, plus précisément, développement d'extensions pour Inkscape.

    Je pense avoir donné les réponses :
    Oui, après que je le demande deux fois.

    Je n'ai pas trouvé de doc sur Inkscape, et d'après les tutoriels ici ou là, il semble que pas grand-monde ne sache au juste ce qui est possible ou pas.
    Je me suis tapé la passionnante lecture des fichiers de plusieurs extensions où ça aurait pourtant pu servir, mais je n'ai rien trouvé de ce genre.
    As-tu une raison de penser que c'est possible ?
    À ce niveau-là, il n'y a plus qu'à regarder le code source d'Inkscape pour être fixé. Moi je le ferai pas.

    J'ai vu que quand elles ont ce genre de besoin, les extensions n'utilisent pas d'optiongroup ni d'enum. Elles utilisent des <page>, une pour chaque option exclusive. Ce n'est pas tout-à-fait la même chose car en principe, deux onglets différents coexistent alors que là le but serait de les rendre mutuellement exclusifs. Mais ça fait le job.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Réponses: 0
    Dernier message: 23/04/2015, 21h27
  2. Réponses: 2
    Dernier message: 12/06/2012, 13h49
  3. Réponses: 6
    Dernier message: 06/03/2012, 07h33
  4. Font de l'affichage des choix proposés par autocompletion
    Par Manulegosny dans le forum Windows Forms
    Réponses: 1
    Dernier message: 12/03/2008, 00h05
  5. Effectuer des "sommes conditionnelles"
    Par bigben89 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 24/08/2007, 16h34

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