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 :

[XSLT] faire un test sur un boolean du fichier xml.


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Invité
    Invité(e)
    Par défaut [XSLT] faire un test sur un boolean du fichier xml.
    Voilà, je souhaite formater mon fichier xml selon l'un des éléments boolean de celui ci.

    J'ai naïvement commencé par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:choose><xsl:when test="sexe=true">Homme</xsl:when><xsl:otherwise>Femme</xsl:otherwise></xsl:choose>
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:if test="speciale=true"><xsl:value-of select=""/></xsl:if>
    mais il est évident que j'ai rien compris :/

    Le pire c'est que je n'ai pas trouvé comment faire sur le net donc j'arrive ici.

    Merci d'avance de m'éclairer sur le sujet

  2. #2
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927
    Par défaut
    Je pense que ton problème est la repésentation de ton "booleen"
    Cela necessite un extrait de ton xml sur ces parties pour qu'on puisse t'aider

  3. #3
    Invité
    Invité(e)
    Par défaut
    Voici un exemple. En premier lieu le fichier 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
    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-stylesheet href="../xsl/test.xsl" type="text/xsl"?>
    <personnes xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xsi:noNamespaceSchemaLocation="../schema/test.xsd">
    	<personne>
    		<prenom>Marc</prenom>
    		<nom>Dupont</nom>
    		<sexe>true</sexe>
    	</personne>
    	<personne>
    		<prenom>Sophie</prenom>
    		<nom>Durand</nom>
    		<sexe>false</sexe>
    	</personne>
    </personnes>
    Ensuite le fichier XSL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?xml version="1.0" encoding="UTF-8"?>
    <html xmlns:xsl="http://www.w3.org/TR/WD-xsl">
    <body style="font-family:Arial; font-size:14pt;">
        <xsl:for-each select="personnes/personne">
    		<div style="background-color:teal; color:white;">
    			<span style="font-weight:bold; color:white; padding:4px"><xsl:value-of select="prenom"/> <xsl:value-of select="nom"/></span>
    		</div >
    		<xsl:choose><xsl:when test="sexe">Homme</xsl:when><xsl:otherwise>Femme</xsl:otherwise></xsl:choose>
    	</xsl:for-each>
    </body>
    </html>
    enfin le 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
    <?xml version="1.0" encoding="UTF-8"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
        <xs:element name="personnes" type="personnesComplexType"></xs:element>
     
        <xs:complexType name="personnesComplexType">
        	<xs:sequence maxOccurs="1" minOccurs="0">
        		<xs:element name="personne" type="personneComplexType" maxOccurs="unbounded" minOccurs="1"></xs:element>
        	</xs:sequence>
        </xs:complexType>
     
        <xs:complexType name="personneComplexType">
        	<xs:sequence maxOccurs="1" minOccurs="1">
        	    <xs:element name="nom" type="xs:string" maxOccurs="1" minOccurs="1"></xs:element>
        	    <xs:element name="prenom" type="xs:string" maxOccurs="1" minOccurs="1"></xs:element>
        	    <xs:element name="sexe" type="xs:boolean" maxOccurs="1" minOccurs="1"></xs:element>
        	</xs:sequence>
        </xs:complexType>
    </xs:schema>
    Le but est d'afficher soit "Homme" soit "Femme" en fonction du boolean dans le fichier xml.

    Le test présent dans le fichier test uniquement la présence de la balise. Ce que je souhaite c'est savoir quoi modifier pour vérifier si le boolean est a true ou false.

  4. #4
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927
    Par défaut
    ce n'est pas un booleen xslt, c'est une string d'ou quote :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:choose><xsl:when test="sexe='true'">Homme</xsl:when><xsl:otherwise>Femme</xsl:otherwise></xsl:choose>

  5. #5
    Invité
    Invité(e)
    Par défaut
    Si je fait ça j'ai l'erreur suivante quand j'ouvre mon xml :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    La page XML ne peut pas être affichée 
    Impossible d'afficher l'entrée XML en utilisant la feuille de style XSL. Corrigez l'erreur, puis cliquez sur le bouton Actualiser ou réessayez ultérieurement. 
     
     
    --------------------------------------------------------------------------------
     
    Jeton attendu 'eof' trouvé '='. sexe-->=<--'true'

    Bon, j'ai finalement trouvé par hasard. J'avais des problèmes dans ma déclaration, j'ai surement copier/coller un mauvais fichier d'exemple.

    Donc je confirme que <xsl:if test="test='true'">...</xsl:if> marche correctement.
    Dernière modification par Invité ; 01/10/2009 à 20h35.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XSLT] Faire une boucle sur une variable [i]
    Par PoT_de_NuTeLLa dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 07/06/2010, 12h45
  2. faire un teste sur le forma de JTextField
    Par Mannoula dans le forum Composants
    Réponses: 2
    Dernier message: 15/06/2006, 00h25
  3. Comment faire un test sur un pchar ?
    Par Mickey.jet dans le forum Langage
    Réponses: 2
    Dernier message: 19/03/2006, 16h53
  4. Comment faire un test sur "" ?
    Par magic8392 dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 28/09/2005, 14h19
  5. faire un test sur un programme externe
    Par marieheraud dans le forum Windows
    Réponses: 3
    Dernier message: 02/09/2004, 18h32

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