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 :

lecture balises avec des <


Sujet :

XML/XSL et SOAP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 29
    Points : 16
    Points
    16
    Par défaut lecture balises avec des <
    suite au message sur les CDATA qui se trouve là :
    http://www.developpez.net/forums/viewtopic.php?t=110150

    j'avoue j'ai fait la fainéante et j'ai repris toute la structure de mon XML de départ pour former un CLOB avec des < et des >

    Ce qui fait que dans ma base de données j'ai ça :
    <BALISE1>valeur1</BALISE1><BALISE2>valeur2</BALISE2>
    dans ma COLONNE1 (de type CLOB)

    là je devrais être super contente, mais une fois que j'ai pu insérer tout ça dans la base (Oracle), j'essaye de le lire avec des pages XSQL et XSL.

    et là, lorsque que je veut récupérer valeur1 par exemple avec un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:value-of select="valeur1"/>
    et bien rien ne s'affiche!
    <BALISE1>valeur1</BALISE1><BALISE2>valeur2</BALISE2> n'est pas considéré comme du XML par XSL.

    Je suppose que c'est parce que les > et < ont été écrits avec des &lt; et &gt;, mais comment ont peut faire pour les récupérer dans ce cas là?

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    c'est pas plutot ca que tu doit utiliser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:value-of select="BALISE1"/>
    ?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 29
    Points : 16
    Points
    16
    Par défaut oui oui
    c'est ce que je fais j'ai mal recopier

  4. #4
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    normallement avec le code que je t'ai donné il n'y a pas de "&gt;" ou de "&lt;" !! (d'allieurs je vais mettre une nouvelle version dans l'autre post)

    tu as regardé si il ya "<" et ">" dans ta base de données ?
    essaye d'abord de rentrer des balises à la main dans ta base de données pour voir si tu arrive a bien récupérer le contenu ...

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 29
    Points : 16
    Points
    16
    Par défaut oui c'est ça
    je suis partie demander du coté du forum oracle on m'a dit que je n'utilisait pas le bon type de donnés (un clob)

    je vais retenter (demain, parce qu'aujourd'hui je suis pas sur place).

  6. #6
    Membre confirmé
    Avatar de grishka
    Inscrit en
    Janvier 2003
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 285
    Points : 499
    Points
    499
    Par défaut
    <BALISE1>valeur1</BALISE1><BALISE2>valeur2</BALISE2> n'est pas considéré comme du XML par XSL.
    cela n'a peut être pas d'importance dans ton cas mais un document XML bien formé doit toujours comporter une seule balise racine. Essaye donc avec ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <BALISES><BALISE1>valeur1</BALISE1><BALISE2>valeur2</BALISE2></BALISES>
    "Les gens normaux croient que si ca marche, c'est qu'il n'y a rien à reparer. Les ingénieurs croient que si ca marche, c'est que ca ne fait pas encore assez de choses."
    --Scott Adams

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 29
    Points : 16
    Points
    16
    Par défaut j'ai une explication
    j'ai une explication en fait :
    oracle pour ne pas s'ennuyer avec les balises XML remplace toutes les < par des &lt; (mais pas les >), et effectivement comme ça ce n'est plus considéré comme du XML même si ça y ressemble une fois affiché dans IE.
    J'ai trouvé une solution en utilisant la balise <xsql:include-xml> mais ça marche uniquement sous oracle 9i.
    J'utilise Oracle 8i, alors ma dernière solution c'est d'utiliser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsql:include-xml href="just_xml.xsql?PARAM1={@PARAM1}"/>
    pour récupérer le XML que j'appelle depuis une autre page XSQL.
    mais l'ai j'ai une erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    - <xsql-error action="xsql:include-xml">
      <message>Error loading URL 'just_xml.xsql?PARAM1=LT01959054'</message> 
      </xsql-error>
    alors que, quand je "load" la page à part, il me renvoit un datagramme XML comme il faut.

    Je ne suis pas sure que ce soit du ressort de ce forum mais je sais pas où aller pour les pbs XSQL.

    la page qui appelle le xsql :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?xml version="1.0" encoding="iso-8859-1"?>
    <page connection="abonne" xmlns:xsql="urn:oracle-xsql">
    <fac-client>
    <xsql:query rowset-element="" row-element="" id-attribute="">
    	SELECT NOM_CLI
    	FROM TABLE_CLIENT
    	WHERE NUM_CLI='{@PARAM1}'
    </xsql:query>
    </fac-client>
    <info-xml>
    <xsql:include-xml href="just_xml.xsql?PARAM1={@PARAM1}"/>
    </info-xml>
    </page>
    la page just_xml.xsql :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <client-abonne connection="abonne" xmlns:xsql="urn:oracle-xsql">
    <xsql:query rowset-element="" row-element="" id-attribute="">
    	SELECT NUM_FAC
    	FROM TABLE_FACTURE
    	WHERE NUM_CLI='{@PARAM1}'
    </xsql:query>
    </client-abonne>
    là je ne récupère pas un bloc xml parce même une donnée simple ça ne marche pas

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 29
    Points : 16
    Points
    16
    Par défaut je me répond à moi même
    en fait il fallait utiliser <xsql:include-xsql ... au lieu de <xsql:include-xml

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 29
    Points : 16
    Points
    16
    Par défaut je vais y arriver....
    Pour palier au fait que le parseur d'oracle-XSQL me sort les données XML sous cette forme : &lt;BALISE>Valeur&lt;BALISE>, j'essaye d'appliquer un xsl sur ce que je récupère.
    J'ai trouvé un template qui permettait de faire des substitutions qui marche très bien avec des caractères simples, mais rien ne va plus quand j'ajoute le caractère <. (bah oui je comprend bien qu'il aime pas ça le xsl!)
    Donc je cherche une technique pour remplacer les &lt! par les <.

    le code que j'utilise pour le remplacement :

    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
    <?xml version="1.0" encoding="iso-8859-1"?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
     
    <xsl:template match="/">
    <ROWSET>
    <xsl:for-each select="client-abonne">
      <ROW>
        <xsl:variable name="theXml" select="XML"/>
        <TEST>
        <xsl:call-template name="subst"> 
          <xsl:with-param name="text"> 
            <xsl:value-of select="$theXml"/> 
          </xsl:with-param> 
          <xsl:with-param name="replace">&lt;</xsl:with-param> 
          <xsl:with-param name="with"><</xsl:with-param> 
        </xsl:call-template>
        </TEST>
      </ROW>
    </xsl:for-each>
    </ROWSET>
    </xsl:template>
     
    <xsl:template match="*" name="subst"> 
      <xsl:param name="text"/> 
      <xsl:param name="replace"/> 
      <xsl:param name="with"/> 
      <xsl:choose> 
        <xsl:when test="string-length($replace) = 0"> 
          <xsl:value-of select="$text"/> 
        </xsl:when>
        <xsl:when test="contains($text, $replace)"> 
          <xsl:variable name="before" select="substring-before($text, $replace)"/> 
          <xsl:variable name="after" select="substring-after($text, $replace)"/> 
          <xsl:value-of select="$before"/> 
          <xsl:value-of select="$with"/> 
          <xsl:call-template name="subst"> 
            <xsl:with-param name="text" select="$after"/> 
            <xsl:with-param name="replace" select="$replace"/> 
            <xsl:with-param name="with" select="$with"/> 
          </xsl:call-template> 
        </xsl:when> 
        <xsl:otherwise> 
          <xsl:value-of select="$text"/> 
        </xsl:otherwise> 
      </xsl:choose> 
    </xsl:template>  
     
    </xsl:stylesheet>
    PS : pour ce qui est de l'insertion dans la base, le XML généré par le template est nickel mais après Oracle patauge et du coup dans ma base il me reste plus qu'un bout "<[CDATA[".

  10. #10
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    essaye ca pour appeler ta fonction de remplacement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        <xsl:with-param name="replace">&amp;lt;</xsl:with-param> 
        <xsl:with-param name="with">&lt;</xsl:with-param>

  11. #11
    Membre émérite

    Homme Profil pro
    Urbaniste
    Inscrit en
    Mars 2002
    Messages
    255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Urbaniste

    Informations forums :
    Inscription : Mars 2002
    Messages : 255
    Points : 2 717
    Points
    2 717
    Par défaut
    C'est pas plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        <xsl:with-param name="replace">&amp;&lt;</xsl:with-param> 
        <xsl:with-param name="with">&lt;</xsl:with-param>
    (un tout petit oubli de & ;-)

    Haypo

  12. #12
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    ben non c'est bien "&amp;lt;"
    apres remplacement des entitées ca donne "&lt;" et c'est bien la chaine de caractères à chercher

Discussions similaires

  1. [DOM] Supprimer des balise avec dom
    Par Shandler dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 04/06/2006, 19h03
  2. problème avec des couches de balises div
    Par pierre68314 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 06/03/2006, 16h45
  3. Les meta balises avec des pages .asp
    Par zorba49 dans le forum ASP
    Réponses: 4
    Dernier message: 12/12/2005, 09h54
  4. Réponses: 2
    Dernier message: 10/08/2005, 09h46
  5. Placement des balises avec DTD
    Par Keul125 dans le forum Valider
    Réponses: 4
    Dernier message: 28/05/2003, 12h08

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