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 avec libxslt2 affiche rien [XSLT 1.0]


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre éclairé Avatar de tigunn
    Homme Profil pro
    Développeur de bug
    Inscrit en
    Janvier 2003
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de bug

    Informations forums :
    Inscription : Janvier 2003
    Messages : 608
    Points : 658
    Points
    658
    Par défaut xslt avec libxslt2 affiche rien
    Bonjour,

    je dois implémenter une transformations xslt 1 dans une page php qui se présente ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    	$xq = new xqueryBP();
    	$fragment = $xq->getFragmentSelonSaCoteEtSonNumero_v3($ref_bib_doc, $ref_bib_num_frag);
    	$xml2=new DOMDocument();
    	$xml2->loadXML('<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="path/templates/xsl/13_03_2012/PP_V2_1_fragment/xsl/normalise_v4.xsl"?>'.$fragment);
     
    	$xsl2=new DOMDocument();
    	$xsl2->load(PATH_APPLICATION.'/templates/xsl/13_03_2012/PP_V2_1_fragment/xsl/normalise_v4.xsl', LIBXML_NOCDATA);
    	$proc2 = new XSLTProcessor();
    	$proc2->importStylesheet($xsl2);
    echo $proc2->transformToXml($xml2);
    Mon xml, retournée par la méthode, getFragmentSelonSaCoteEtSonNumero_v3():
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <text><term xmlns="http://www.tei-c.org/ns/1.0" xmlns:dbp="http://dossiers-flaubert.ish-lyon.cnrs.fr/ns/1.0" dbp:hand="EL-encre" rend="underline" rendition="#entete-page">Exaltation <lb/>du
                bas</term><term xmlns="http://www.tei-c.org/ns/1.0" xmlns:dbp="http://dossiers-flaubert.ish-lyon.cnrs.fr/ns/1.0" dbp:hand="GF-encre" rend="underline">Vampirisme</term><term xmlns="http://www.tei-c.org/ns/1.0" xmlns:dbp="http://dossiers-flaubert.ish-lyon.cnrs.fr/ns/1.0" dbp:hand="GF-encre">Le peuple plus fort <lb/>que les
                    Savants.</term><item xmlns="http://www.tei-c.org/ns/1.0" type="fragment" n="5"><cit xmlns:dbp="http://dossiers-flaubert.ish-lyon.cnrs.fr/ns/1.0" dbp:hand="EL-encre"><quote><del><note type="selection" dbp:hand="GF-crayon">[</note><seg type="selection-crochet">Les hommes en butte au vampirisme sont donc vraiment
                      <lb/>possédés par les morts, et</seg><note type="selection" dbp:hand="GF-crayon">]</note></del><note type="regie" dbp:hand="GF-encre" place="above" xml:id="n2_g226_1_f_094__r____" prev="#n1_g226_1_f_094__r____">(2)</note> le peuple,
                  avec son bon sens, a vu <lb/>plus clair en cette matière <add dbp:hand="GF-encre" place="below">(le vampirisme)</add> que les Savants avec leur esprit <lb/>sceptique
                  - <note type="regie" dbp:hand="GF-encre" xml:id="n3_g226_1_f_094__r____" next="#n4_g226_1_f_094__r____">(3)</note></quote><bibl xml:id="b5999-3"><hi rend="underline">Goërres</hi> - Mystique. <choice><abbr type="conventionnel">Vol.</abbr><expan>Vol<ex>ume</ex></expan></choice> III. <choice><abbr type="conventionnel">Ch.</abbr><expan>Ch<ex>apitre</ex></expan></choice> XIV. <choice><abbr type="conventionnel">p.</abbr><expan>p<ex>age</ex></expan></choice> 252</bibl></cit></item></text>
    C'est-a-dire une partie d'un document xml-TEI.
    Les feuilles xsl, normalise_v4.xsl:
    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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    <xsl:stylesheet 
        xmlns:tei="http://www.tei-c.org/ns/1.0"
        xmlns="http://www.w3.org/1999/xhtml" 
        xmlns:dbp="http://dossiers-flaubert.ish-lyon.cnrs.fr/ns/1.0"
        xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
        exclude-result-prefixes="tei xsl"
        version="1.0">
     
        <xsl:import href="commun_v4.xsl"/>
     
        <xsl:template name="css">
            <link rel="stylesheet" type="text/css" href="./style/tei_v4.css"/>
            <link rel="stylesheet" type="text/css" href="./style/tei-normalise_v4.css"/>
        </xsl:template>
     
        <!--notes critiques qui n'apparaissent pas-->
         <xsl:template match="tei:note[@type='DBP-footnote']"/>
        <xsl:template name="footnotes"/>
     
        <xsl:template name="fragment-header">
            <!--<span class="title">[ <xsl:value-of select="@n"/> ]</span>-->		
        </xsl:template>
     
        <xsl:template match="tei:abbr|tei:expand|tei:reg|tei:ex">
            <span>
                <xsl:attribute name="class">
                    <xsl:value-of select="name()" />
                    <xsl:call-template name="xml_atts"/>
                    <xsl:call-template name="other_atts"/>
                </xsl:attribute>
                <xsl:apply-templates/>
            </span>
        </xsl:template>
     
        <!--choice-->
     
        <xsl:template match="tei:choice">
     
            <xsl:choose>
     
                <xsl:when test="tei:abbr[@type='conventionnel']">
                    <xsl:choose>
                        <xsl:when test="tei:reg">
                            <xsl:apply-templates select="tei:reg[last()]"/>
                        </xsl:when>
                        <xsl:otherwise>
                            <xsl:apply-templates select="tei:abbr"/>
                        </xsl:otherwise>
                    </xsl:choose>                              
                </xsl:when>   
     
                <xsl:when test="tei:abbr[@type='conventionnel'] and tei:expan and tei:reg">  
                    <xsl:apply-templates select="tei:abbr"/>              
                </xsl:when>
     
                <xsl:when test="tei:abbr and tei:expan and tei:reg">
                    <xsl:apply-templates select="tei:reg"/>              
                </xsl:when>
     
                <xsl:when test="tei:abbr and tei:expan">
                    <xsl:apply-templates select="tei:expan"/>              
                </xsl:when>
     
                <xsl:when test="tei:orig and tei:reg">
                    <xsl:apply-templates select="tei:reg"/>               
                </xsl:when>      
     
                <xsl:when test="tei:sic and tei:corr">
                    <xsl:apply-templates select="tei:corr"/>               
                </xsl:when> 
     
                <xsl:otherwise>
                    <xsl:apply-templates/>
                </xsl:otherwise>
     
            </xsl:choose>
     
        </xsl:template> 
     
        <!--gap-->  
        <xsl:template match="tei:gap" />
     
        <!--supplied-->
        <xsl:template match="tei:supplied" >
     
            <span>
                <xsl:attribute name="class">
                    <xsl:value-of select="name()" />
                    <xsl:call-template name="xml_atts"/>
                    <xsl:call-template name="other_atts"/><xsl:text> </xsl:text>
                    <xsl:if test="@reason">reason</xsl:if><xsl:text> </xsl:text>
                    <xsl:if test="contains(@reason, 'decoupe')"></xsl:if>
                </xsl:attribute>
     
                <xsl:apply-templates />
     
              </span>
     
        </xsl:template>
     
        <!--lb, del, non traités en norm-->
        <xsl:template match="tei:lb">
            <xsl:text> </xsl:text>
        </xsl:template>
     
        <xsl:template match="tei:del" />
     
        <xsl:template match="tei:c[@type='hyphen-orig']"/>
     
        <xsl:template match="tei:bibl[@xml:id]">
     
            <xsl:variable name="bibl-site"><xsl:value-of select="@xml:id"/></xsl:variable>
            <a class="ref-bibl" href="http://dossiers-flaubert.ish-lyon.cnrs.fr/{$bibl-site}">
                <br/>
                <span>
                    <xsl:attribute name="class">
                        <xsl:value-of select="name()" />-norm
                        <xsl:call-template name="xml_atts"/>
                        <xsl:call-template name="other_atts"/>
                        <xsl:call-template name="delSpan"/>
     
                    </xsl:attribute>
     
                    <xsl:apply-templates/>
                </span>
            </a>
        </xsl:template>   
     
    </xsl:stylesheet>
    commun_v4.xsl:
    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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    <?xml version="1.0" encoding="UTF-8"?>
    
    <xsl:stylesheet xmlns:dbp="http://dossiers-flaubert.ish-lyon.cnrs.fr/ns/1.0" xmlns="http://www.w3.org/1999/xhtml" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns:tei="http://www.tei-c.org/ns/1.0" exclude-result-prefixes="tei">
        <xsl:output indent="yes" method="xml" encoding="UTF-8" />
    
        <xsl:template match="comment() | processing-instruction()"/>
        
        <xsl:include href="variables.xsl" />
        <xsl:template match="/tei:TEI">
            
            
            <html>
                
                <head>
                    <title>
                        <xsl:value-of select="normalize-space(//tei:titleStmt/tei:title[1])"/>
                        
                    </title>
                    
                    
                    <xsl:call-template name="css"/>
                    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
                </head>
                <body>
                <xsl:apply-templates select="tei:text/tei:body/tei:list"/>
                
                
                </body>
            </html>
        </xsl:template>
        
        <xsl:template name="xml_atts">
            <xsl:attribute name="id">
                <xsl:text></xsl:text><xsl:value-of select="@xml:id"/>
            </xsl:attribute>
            
            <!-- autres attributs xml éventuels -->
        </xsl:template>
        
        <xsl:template name="other_atts">
            <xsl:for-each select="@*">
                <xsl:text> </xsl:text><xsl:value-of select="local-name(.)"/>-<xsl:value-of select="translate(., '#()', '')"/>   
            </xsl:for-each>
            <xsl:for-each select="@dbp:*">
                <xsl:text> </xsl:text><xsl:value-of select="local-name(.)"/>-<xsl:value-of select="translate(., '#()', '')"/>   
            </xsl:for-each>
        </xsl:template>	
    
        <xsl:template match="tei:label|tei:label[tei:del]|tei:label[tei:term]|tei:head[tei:term]">
            
            <xsl:choose>
                <xsl:when test="tei:term/@rendition">
                    <h1>
                        <xsl:attribute name="class">
                            <xsl:call-template name="xml_atts"/>
                            <xsl:call-template name="other_atts"/>
                            <xsl:call-template name="delSpan"/>
                            <xsl:call-template name="addSpan"/>
                        </xsl:attribute>
                        <xsl:apply-templates />
                    </h1>
                </xsl:when>
                <xsl:otherwise>
                    <h3>
                        <xsl:attribute name="class">
                            <xsl:call-template name="xml_atts"/>
                            <xsl:call-template name="other_atts"/>
                            <xsl:call-template name="delSpan"/>
                            <xsl:call-template name="addSpan"/>
                        </xsl:attribute>
                        <xsl:apply-templates />
                    </h3>
                </xsl:otherwise>
            </xsl:choose>
        </xsl:template>
        
        <xsl:template name="delSpan">
            <xsl:variable name="delSpanTo">
                <xsl:value-of select="translate(preceding::tei:delSpan[1]/@spanTo,'#','')"/>
            </xsl:variable>
            <xsl:if test="following::tei:anchor[1][@xml:id=$delSpanTo]"><xsl:text> </xsl:text><xsl:value-of select="preceding::tei:delSpan[1]/@rend"/></xsl:if>
        </xsl:template>
        
        <xsl:template name="addSpan">
            <xsl:variable name="addSpanTo">
                <xsl:value-of select="translate(preceding::tei:addSpan[1]/@spanTo,'#','')"/>
            </xsl:variable>
            <xsl:if test="following::tei:anchor[1][@xml:id=$addSpanTo]"><xsl:text> </xsl:text><xsl:value-of select="preceding::tei:addSpan[1]/@type"/></xsl:if>
        </xsl:template>
        
        <xsl:template match="tei:item">
            
            <p>
                <xsl:attribute name="class">
                    <xsl:call-template name="xml_atts"/>
                    <xsl:call-template name="other_atts"/>
                    <xsl:call-template name="delSpan"/>
                    <xsl:call-template name="addSpan"/>
                    
                    <xsl:if test="@type='fragment'">
                        <xsl:text> </xsl:text>fragment
                    </xsl:if>
                </xsl:attribute>
                
                <span class="fragment-header">
                    <xsl:if test="@type='fragment'">
                        <xsl:call-template name="fragment-header"/>
                    </xsl:if>
                    <xsl:apply-templates select="tei:note[@type='DBP-footnote']" />
                </span>
                <span class="fragment-body">
                    <xsl:apply-templates select="*[not(@type='DBP-footnote')]" />
                </span>	
            </p>
        </xsl:template>
        
        <!--infos d'en-tête-->
        <xsl:template match="tei:abbr|tei:c|tei:milestone|tei:hi|tei:cit|tei:bibl|tei:quote|tei:term|tei:note|tei:g|tei:add|tei:unclear|tei:addSpan|tei:supplied|tei:p|tei:seg">
            <span>
                <xsl:attribute name="class">
                    <xsl:value-of select="name()" />
                    <xsl:call-template name="xml_atts"/>
                    <xsl:call-template name="other_atts"/>
                </xsl:attribute>
                <xsl:apply-templates/>
            </span>
        </xsl:template>
    
    </xsl:stylesheet>
    et variables.xsl:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet xmlns:dbp="http://dossiers-flaubert.ish-lyon.cnrs.fr/ns/1.0"  xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" version="1.0" xmlns:tei="http://www.tei-c.org/ns/1.0" exclude-result-prefixes="tei">
     
    	<xsl:variable name="survol-appel-note">Note</xsl:variable>
     
    	<!-- survol icone retour d'une note de bas de page vers le fragment correspondant -->
    	<xsl:variable name="survol-retour-fragment">Retour haut</xsl:variable>
    	<xsl:variable name="retour-fragment">Retour</xsl:variable>
    </xsl:stylesheet>
    J'ai indiqué en gras où se produisait les erreurs, et en rouge les éléments qui, selon moi, en sont la cause (cf commun_v4.xsl). Je pense que cela doit venir des namespaces, de la source xml ou du processeur de libxslt2; mais impossible de décider!?

    Pour l'instant, rien ne 'affiche à part si je commente les appels à ces templates.


    Merci de votre aide.

  2. #2
    Expert confirmé
    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
    Points : 4 845
    Points
    4 845
    Par défaut
    Sans être très à l'aise avec les namespaces, je dirais que @xml:id n'est pas très correct (voire pas du tout ).

    Pour le reste je ne vois pas de raison qui ferait que ça ne fonctionne pas.

  3. #3
    Membre éclairé Avatar de tigunn
    Homme Profil pro
    Développeur de bug
    Inscrit en
    Janvier 2003
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de bug

    Informations forums :
    Inscription : Janvier 2003
    Messages : 608
    Points : 658
    Points
    658
    Par défaut
    N'étant pas du tout à l'aise, et n'ayant pas produit ces xsl, j'apprécierais beaucoup que tu m'expliques pourquoi @xml:id ne serait pas correct.

    Je précise que dans oxygen 13 avec Saxon HE 9, la transformation se passe sans problème... , pour un document xml-TEI complet.
    Mais bon, comme nous avons réussi à afficher en xslt2 la même partie du xml en usant de feuilles xsl faites aussi pour traiter des documents xml-TEI complets.
    Pour des questions de performances, les transformations avec XML_XSLT2Processor(), XSLT2, prenaient environ 1 seconde chacune, nous avons donc essayer de traiter tout en XSLT 1.0, d'où ces feuilles xsl en xslt 1.0.

  4. #4
    Expert confirmé
    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
    Points : 4 845
    Points
    4 845
    Par défaut
    Si ça marche avec Saxon 9, je suppose que je me trompe en disant que ce n'est pas correct alors.

    Pour moi, la syntaxe xxx:yyy signifie :
    - namespace = xxx
    - élément dans ce namespace = yyy

    Là, tu avais "@xml:id" ce qui aurait été sencé vouloir dire namespace @xml, élément id et je doute fort qu'on puisse avoir des arobases dans un namespace (et qui ne serait pas déclaré qui plus est). Mais comme je l'ai dit je ne suis pas du tout expert en namespace, ça m'avait juste piqué les yeux.

  5. #5
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 559
    Points : 21 621
    Points
    21 621
    Par défaut
    De fait, @xml:id signifie "l'attribut xml:id" qui signifie "l'attribut id dans le namespace correspondant au préfixe xml".

    Et le préfixe xml est toujours défini implicitement et ne peut être ni annulé ni modifié. Il correspond au namespace http://www.w3.org/XML/1998/namespace. L'attribut xml:id en est une utilisation courante. On le retrouve aussi dans l'attribut xml:lang.

    Bref, de ce côté-là, il n'y a pas de problème.

    Par contre, appeler des templates qui génèrent des attributs, à l'intérieur de la définition d'un attribut, ça ça ne veut pas dire grand-chose et devrait avoir un comportement indéfini.

    Par ailleurs, ces templates font du texte assez arbitraire alors qu'ils définissent l'attribut class, qui est censé composer les mots-clés sémantiques de l'élément HTML concerné. Des mots-clés, pas du texte arbitraire. Ça ne risque pas de marcher.

    De manière générale, quand on étudie un problème, on commence par l'isoler dans un tout petit bout de code très facile à lire et à tester.

  6. #6
    Membre éclairé Avatar de tigunn
    Homme Profil pro
    Développeur de bug
    Inscrit en
    Janvier 2003
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de bug

    Informations forums :
    Inscription : Janvier 2003
    Messages : 608
    Points : 658
    Points
    658
    Par défaut
    Sous oxygen 13.1:
    - Avec Saxon 9 HE, PE: pas de problème, ni de warning;
    - Avec xalan, pareil;
    - Avec Saxon 6.5: j'ai 5 fois le même warning, c-a-d
    ID Système: C:\...\commun_v4.xsl
    Gravité: warning
    Description: Cannot write an attribute node when no element start tag is open
    Emplacement de début: 33:0
    En regardant sur google, j'ai trouvé un exemple ainsi fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <xsl:template name="xml_atts">
            <xsl:element name="note">
    <xsl:attribute name="id">
                <xsl:text></xsl:text><xsl:value-of select="@xml:id"/>
            </xsl:attribute>
    </xsl:element>
        </xsl:template>
    Mais j'ai encore plus d'erreur maintenant:
    Gravité: warning
    Description: Non-text output nodes are ignored when writing an attribute, comment, or PI
    Je comprend même pas

  7. #7
    Membre éclairé Avatar de tigunn
    Homme Profil pro
    Développeur de bug
    Inscrit en
    Janvier 2003
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de bug

    Informations forums :
    Inscription : Janvier 2003
    Messages : 608
    Points : 658
    Points
    658
    Par défaut
    @thelvin >> j'avais pas vu ta réponse.
    Par contre, appeler des templates qui génèrent des attributs, à l'intérieur de la définition d'un attribut, ça ça ne veut pas dire grand-chose et devrait avoir un comportement indéfini.

    Par ailleurs, ces templates font du texte assez arbitraire alors qu'ils définissent l'attribut class, qui est censé composer les mots-clés sémantiques de l'élément HTML concerné. Des mots-clés, pas du texte arbitraire. Ça ne risque pas de marcher.
    Je n'ai pas fait ses xsl, et je débute en xslt; tu pourrais expliquer , stp.

    De manière générale, quand on étudie un problème, on commence par l'isoler dans un tout petit bout de code très facile à lire et à tester.
    Ca, par contre, je sais le faire Mais on ne peut satisfaire ceux qui veulent un maximum de code et les autres.

  8. #8
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 559
    Points : 21 621
    Points
    21 621
    Par défaut
    Citation Envoyé par tigunn Voir le message
    @thelvin >> j'avais pas vu ta réponse.
    Je n'ai pas fait ses xsl, et je débute en xslt; tu pourrais expliquer , stp.
    Il ne faut pas insérer des attributs à l'intérieur d'autres attributs. C'est d'ailleurs ce que dit le warning que tu viens de trouver.

    Autrement dit, il ne faut pas faire de <xsl:attribute> à l'intérieur d'un autre <xsl:attribute>. Ni à l'intérieur d'un template qui remplit un <xsl:attribute>, puisque c'est pareil.

    Concernant les attributs class, c'est du HTML, pas du XSLT. Il ne faut pas mettre n'importe quoi dans les attributs class. Il faut y mettre ce qu'il y a à y mettre. J'ignore pourquoi tu faisais autrement.

    Citation Envoyé par tigunn Voir le message
    Ca, par contre, je sais le faire Mais on ne peut satisfaire ceux qui veulent un maximum de code et les autres.
    Personne ne veut un maximum de code. Mais tout le monde veut un exemple complet qui montre le problème. Pour pouvoir le tester chez eux, et vérifier s'il n'y a pas un soucis dans les déclarations préliminaires ou un effet de bord qu'on ne pouvait pas deviner sans le voir.

    Par contre, à partir du moment où il est complet, plus l'exemple est court, mieux c'est. C'est le principe du SSCCE.

  9. #9
    Membre éclairé Avatar de tigunn
    Homme Profil pro
    Développeur de bug
    Inscrit en
    Janvier 2003
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de bug

    Informations forums :
    Inscription : Janvier 2003
    Messages : 608
    Points : 658
    Points
    658
    Par défaut
    Bon, pour la 1ère partie:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <xsl:template name="xml_atts">
            <xsl:attribute name="id">
                <xsl:text></xsl:text><xsl:value-of select="@xml:id"/>
            </xsl:attribute>
        </xsl:template>
    Je crois que j'ai compris, cela recèle même une certaine logique . Merci Thelvin.
    J'ai donc remplacé le template par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <xsl:template name="xml_atts">
                <xsl:text></xsl:text>
        </xsl:template>
    De toute façon, je ne sais même pas à quoi il sert; je pense le virer, ou le laisser vide. C'est très tentant.

    Pour le reste: cela résout aussi le problème du dernier template de commun_v4.xsl.

    Merci les gars !!

  10. #10
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 559
    Points : 21 621
    Points
    21 621
    Par défaut
    Citation Envoyé par tigunn Voir le message
    J'ai donc remplacé le template par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <xsl:template name="xml_atts">
                <xsl:text></xsl:text>
        </xsl:template>
    De toute façon, je ne sais même pas à quoi il sert; je pense le virer, ou le laisser vide. C'est très tentant.
    En fait, là, il ne fait rien du tout, ce qui ne risque pas de poser problème. Du coup oui, tu peux le virer.

    Je pense qu'en principe, il servait à être appelé ailleurs que là où tu l'appelais. À un endroit où on a le droit de créer des <xsl:attribute>. Au fond, ce truc servait juste à copier des attributs id.

  11. #11
    Membre éclairé Avatar de tigunn
    Homme Profil pro
    Développeur de bug
    Inscrit en
    Janvier 2003
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de bug

    Informations forums :
    Inscription : Janvier 2003
    Messages : 608
    Points : 658
    Points
    658
    Par défaut
    oui effectivement, j'en ai eu confirmation hier soir.
    Du coup retour à l'envoyeur, pour complétion du travail.

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

Discussions similaires

  1. ListView n'affichant rien avec un CursorAdapter
    Par Wilane dans le forum Composants graphiques
    Réponses: 1
    Dernier message: 24/12/2014, 15h31
  2. Réponses: 1
    Dernier message: 04/07/2013, 08h43
  3. Mon site n'affiche rien avec Mozilla firefox
    Par sk8er dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 18/09/2011, 16h50
  4. Problem release avec le .exe, rien ne s'affiche
    Par F-fisher dans le forum OpenGL
    Réponses: 3
    Dernier message: 24/09/2008, 12h55
  5. cout n'affiche rien dans la console avec un projet Qt & codeblocks
    Par rastakouair dans le forum Code::Blocks
    Réponses: 4
    Dernier message: 25/01/2008, 17h46

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