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 :

xhtml ->xml xsl:attribute name+not valid


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    yos
    yos est déconnecté
    Membre du Club
    Inscrit en
    Mai 2005
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 140
    Points : 60
    Points
    60
    Par défaut xhtml ->xml xsl:attribute name+not valid
    Saalut tout le monde
    j'utilise xsl:Attribute name pour récupérer des nom d'attribut d'une source xhtml seulement parfois la source est mal formet donc le xslt de transformation me génère des erreurs

    comment lui dire
    if not valid ---> ne pas faire

    merci beaucoups pour votre aide

  2. #2
    Membre expérimenté
    Avatar de virgul
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 625
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 625
    Points : 1 666
    Points
    1 666
    Par défaut
    Salut,

    Je comprend pas trop pour récupérer une valeur d'un attribut dans une feuille XSLT tu ne doit pas fair xsl:attribute mais un value-of???

    Si ce que tu veux faire c'est prendre la valeur d'un attribut pour le remettre dans un attribut la je comprend:

    il te faut faire un test :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:if test="tonchamps">xsl:att.......</xsl:if>
    Ce qui te permet de tester si il y a une valeur valide dans ton attribut et si c'est ok il va dans la boucle!!!!

    ++

    Thierry
    "Life is short don't forget to inhale"
    Mais: "Mieux vaux arriver en retard dans ce monde... qu'en avance à l'autre."

  3. #3
    yos
    yos est déconnecté
    Membre du Club
    Inscrit en
    Mai 2005
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 140
    Points : 60
    Points
    60
    Par défaut
    Désolé je n'étais pas assez claire

    c'est bien un value-of

    le probleme n'est pas là

    en faite je génère un attribut en allant chercher son nom dans la première ligne d'un tableau + le traitement des espace dans les noms d'attribut

    tout ce passe sans problème sauf pour les tableaux mal formé qui me génère des erreur il recupère des nom non valid
    merci pour votre aide

  4. #4
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Bonjour,

    si ton document n'est pas bien formé, c'est très mal parti. Il faut que le document XHTML soit conforme à la recommandation "stricte" du W3C pour faire l'objet d'une transformation par XSLT. Si ce n'est pas le cas, un pré-traitement avec tidy, par exemple, sera nécessaire avant d'envisager d'utiliser XSLT.
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  5. #5
    yos
    yos est déconnecté
    Membre du Club
    Inscrit en
    Mai 2005
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 140
    Points : 60
    Points
    60
    Par défaut
    Grandfather,

    le xhtml est bien formé (déjà traité avec TIDY)
    c'est les tableaux qui sont mal formé dans le sense où parfois ne contiennent pas la première ligne à partir de laquelle je récupère mes noms d'attributs.

    merci

  6. #6
    Membre expérimenté
    Avatar de virgul
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 625
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 625
    Points : 1 666
    Points
    1 666
    Par défaut
    c'est les tableaux qui sont mal formé dans le sense où parfois ne contiennent pas la première ligne à partir de laquelle je récupère mes noms d'attributs.
    Faut que tu poste tes bouts de codes qui te posent problème car la c'est impossible à comprendre! Et explique aussi bien qu'es-ce que tu veux en sortie et tout autre info utile!


    Merci

    Thierry

    P.S. c'est aussi valable pour tes autres messages expliqué c'est bien illustré c'est mieux!
    "Life is short don't forget to inhale"
    Mais: "Mieux vaux arriver en retard dans ce monde... qu'en avance à l'autre."

  7. #7
    yos
    yos est déconnecté
    Membre du Club
    Inscrit en
    Mai 2005
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 140
    Points : 60
    Points
    60
    Par défaut
    ok voilà à quoi resemble mon code
    une partie du code :
    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
    <!--  tableau --> 
     <xsl:template match="xhtml:body/xhtml:form[2]/xhtml:table[@id='LISTE'][@border='1']">
        <rubrique>
             <xsl:attribute name="titre">    
                <xsl:apply-templates select="(preceding::xhtml:b)[last()]"/>
                <xsl:copy-of select ="text()"/>
             </xsl:attribute>
            <xsl:apply-templates select="xhtml:tr[position() &gt; 1]"/>      
        </rubrique>
     </xsl:template>
    <!-- generer un element item  -->
     <xsl:template match="xhtml:body/xhtml:form[2]/xhtml:table[@id='LISTE'][@border='1']/xhtml:tr"> 
        <xsl:element name="item"> 
            <xsl:apply-templates select="xhtml:td"/> 
        </xsl:element> 
     </xsl:template> 
    <xsl:template match="xhtml:body/xhtml:form[2]/xhtml:table[@id='LISTE'][@border='1']/xhtml:tr/xhtml:td">
     
    <!-- les noms d'attribut-->
      <xsl:variable name="indice" select="position()"/> 
           <xsl:attribute name="{translate(normalize-space(../../xhtml:tr[1]/xhtml:td[$indice]), ' ', '-')}"> 
        <xsl:value-of select="."/> 
      </xsl:attribute> 
     
    </xsl:template>
    Une partie de la source Xhtml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <table border="1" cellpadding="4" cellspacing="0" id="LISTE">
    <tr valign="top"> [b]cette premiere ligne est parfois manqante[/b]
     <td nowrap="nowrap" id="LISTE"><b>Tour de poignet</b></td>
     <td nowrap="nowrap" id="LISTE"><b>Taille</b></td>
     <td nowrap="nowrap" id="LISTE"><b>Coloris</b></td>
     <td nowrap="nowrap" class="LISTE"><b>Référence</b></td>
    </tr>
    <tr valign="top" id="LISTE">
     <td nowrap="nowrap">13-15 cm</td>
     <td nowrap="nowrap">1</td>
     <td nowrap="nowrap">noir</td>
     <td nowrap="nowrap">7500237</td>
    </tr>
    avec le xslt j'ai comme résultat

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <rubrique titre="Modèle :">
    <item Tour-de-poignet="13-15 cm" Taille="1" Coloris="noir" Référence="7500237"/>
    certains tableaux non pas la premiere ligne donc erreur de attribute name

    merci pour votre aide

  8. #8
    Membre expérimenté
    Avatar de virgul
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 625
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 625
    Points : 1 666
    Points
    1 666
    Par défaut
    ok

    si j'ai bien compris c'est le "header" entete de ton tableau qu'il te manque:

    <td nowrap="nowrap" id="LISTE"><b>Tour de poignet</b></td>
    <td nowrap="nowrap" id="LISTE"><b>Taille</b></td>
    <td nowrap="nowrap" id="LISTE"><b>Coloris</b></td>
    <td nowrap="nowrap" class="LISTE"><b>Référence</b></td>
    Mais a mon avis ca ne te fait pas une erreur a cause de ca vu qu'un premier il y en a toujours un c'est surement car il te prend ta deuxiè,me ligne qui devient première et comme un attribut n'a pas le droit de commencer par un chiffre ca te fait une erreur!

    Es-ce que tu crois que c'est possible?

    Alors la seul facon d'éviter ca est de faire un test sur id (vu qu'a voir il est la seuleument pour le titre) et si il n'y en a pas il faut en faire des par défaut!

    Le plus ingénieux si tu peux modifier ton xhtml d'entré serait d'utiliser la balise <thead> et <tbody> qui te permette de bien spécifier quelle est le titre et quelle est le contenu! Mais si tu ne peux pas il faut que tu trouve une facon de les différencier!

    ++

    Thierry
    "Life is short don't forget to inhale"
    Mais: "Mieux vaux arriver en retard dans ce monde... qu'en avance à l'autre."

  9. #9
    yos
    yos est déconnecté
    Membre du Club
    Inscrit en
    Mai 2005
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 140
    Points : 60
    Points
    60
    Par défaut
    merci pour ta reponse Virgul,
    j'ai verifié la source des xhtml des fichiers qui causes problêmes
    c'est bien la premiere ligne qui manque
    la difficulté étant que j'ai d'autres tableaux dans la source dont la premiere ligne ne contient pas les mêmes attributs
    donc le test est compliqué

    es possible de les ignorer tout simplement avec un test du genre
    if Qname valid ?! si non rien

    merci pour votre aide

  10. #10
    Membre expérimenté
    Avatar de virgul
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 625
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 625
    Points : 1 666
    Points
    1 666
    Par défaut
    Oui tout à fait comme je te l'ai indiqué si tu match un noeud et qu'il ne trouve pas il ne va pas dans la boucle!

    Mais tout le problème réside en le fait que si tu n'a pas de nom d'attribut tu risque d'être embêté pour leur donnée une valeur? non

    Il faut que tu trouve une facon de les différencier!

    if Qname valid ?! si non rien
    tu entends par valid quoi? si tu trouve la réponse il sera facile de faire un choix avec XSLT en faisant un test sur l'élément!
    "Life is short don't forget to inhale"
    Mais: "Mieux vaux arriver en retard dans ce monde... qu'en avance à l'autre."

Discussions similaires

  1. [HTML 5] [Warning] Attribute 'name' is not a valid attribute
    Par Jinkas dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 24/04/2013, 16h24
  2. Attribute 'class' not valid for textbox
    Par olibara dans le forum ASP.NET
    Réponses: 2
    Dernier message: 10/01/2010, 16h07
  3. [XSLT] renseignements sur xsl:element name et xsl:attribute name
    Par borkipreiz dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 30/12/2009, 23h26
  4. [XSLT ]<xsl:attribute name="href"> --> problème
    Par vatzyaya dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 10/10/2007, 09h44
  5. [VB.Net][VS2005] "Statement is not valid in a name spac
    Par Irlandais dans le forum Windows Forms
    Réponses: 8
    Dernier message: 15/12/2005, 09h35

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