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 ]<xsl:attribute name="href"> --> problème


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 5
    Points : 1
    Points
    1
    Par défaut [XSLT ]<xsl:attribute name="href"> --> problème
    Salut à tous!

    Il m'arrive un problème que je n'arrive pas à résoudre (Il faut me pardonner, je suis infographiste ). J'aurais donc besoin de l'aide d'informaticiens et je pense que pour vous ce sera facile :smile:

    Dans le code de ma page "sommaire_une.xsl"(sensée afficher le sommaire de liens vers des news AFP sur mon site), tout fonctionne tant que je ne modifie pas l'URL => mon problème provient donc de cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:attribute name="href">http://www.polyfoot.eu/index.php?option=com_content&task=view&id=310&Itemid=126?article=<xsl:value-of select="../NewsItemRef/@NewsItem"/></xsl:attribute>

    Alors qu'avec cette ligne, ça fonctionne! (Mais ne me permet pas d'afficher l'article au sein de mon site...) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:attribute name="href">http://www.polyfoot.eu/SWF/afparticleune.php?article=<xsl:value-of select="../NewsItemRef/@NewsItem"/></xsl:attribute>
    Mon but est d'obtenir un lien semblable à celui-ci (seul la variable article changera) : http://www.polyfoot.eu/index.php?opt...b8c413.411.xml

    Malheureusement, dès que je mets ceci http://www.polyfoot.eu/index.php?opt...310&Itemid=126 avant la variable article dans l'URL, j'ai un problème dans le sablotron...
    Remplacer les & par me direz-vous? Bah non, même problème


    Auriez-vous une idée? Une piste? La solution?


    Voici la page complète:
    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
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="XML" version="1.0" encoding="iso-8859-1"/>
    <xsl:template match="/">
      <html>
      <body>
        <xsl:for-each select="NewsML/NewsItem/NewsComponent/NewsComponent/NewsLines">
     <xsl:if test="position() &lt;= 10">
     <a>
    <xsl:attribute name="href">http://www.polyfoot.eu/index.php?option=com_content&task=view&id=310&Itemid=126?article=<xsl:value-of select="../NewsItemRef/@NewsItem"/></xsl:attribute>
      <span class="guide">
     
      <xsl:value-of select="HeadLine"/></span>
       </a><br/>      
      <IMG>
       <!-- -->
       <xsl:attribute name="BORDER">
        <xsl:text>0</xsl:text>
       </xsl:attribute>
       <!-- -->
       <xsl:attribute name="HEIGHT">
        <xsl:text>12</xsl:text>
       </xsl:attribute>
       <!-- -->
       <xsl:attribute name="SRC">peau/pointsroses.gif</xsl:attribute>
       <!-- -->
       <xsl:attribute name="WIDTH">
        <xsl:text>166</xsl:text>
       </xsl:attribute>
       <!-- -->
     </IMG><br/>
       </xsl:if>
      </xsl:for-each>   
      </body>
      </html>
    </xsl:template></xsl:stylesheet>

  2. #2
    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,

    Il faut que les & soient remplacés par &amp; pour que le code XSLT (qui est du XML avant tout) soit valide. Et le comportement normal du processeur XSLT est de faire la même chose dans le fichier de sortie. Pour éviter cela, utilise ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <xsl:attribute name="href">
      <xsl:value-of disable-output-escaping="yes" select="concat('http://www.polyfoot.eu/index.php?option=com_content&amp;task=view&amp;id=310&amp;Itemid=126?article=', ../NewsItemRef/@NewsItem)"/>
    </xsl:attribute>
    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

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Merci pour ta réponse Papy .

    Malheureusement, lorsque je place ce code, j'obtiens ceci :
    Warning: Sablotron error on line 11: XML parser error 4: not well-formed (invalid token) in /home.10.21/polyfoot/www/AFP/francais/indexune.php on line 17


    Voilà la page après avoir effectué ta modification:
    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
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="XML" version="1.0" encoding="iso-8859-1"/>
    <xsl:template match="/">
      <html>
      <body>
        <xsl:for-each select="NewsML/NewsItem/NewsComponent/NewsComponent/NewsLines">
     <xsl:if test="position() &lt;= 10">
     <a>
     
     
    <xsl:attribute name="href">
     <xsl:value-of disable-output-escaping="yes" select="concat('http://www.polyfoot.eu/index.php?option=com_content&task=view&id=310&Itemid=126?article=', ../NewsItemRef/@NewsItem)"/>
    </xsl:attribute>
     
      <span class="guide">
     
      <xsl:value-of select="HeadLine"/></span>
       </a><br/>      
      <IMG>
       <!-- -->
       <xsl:attribute name="BORDER">
        <xsl:text>0</xsl:text>
       </xsl:attribute>
       <!-- -->
       <xsl:attribute name="HEIGHT">
        <xsl:text>12</xsl:text>
       </xsl:attribute>
       <!-- -->
       <xsl:attribute name="SRC">peau/pointsroses.gif</xsl:attribute>
       <!-- -->
       <xsl:attribute name="WIDTH">
        <xsl:text>166</xsl:text>
       </xsl:attribute>
       <!-- -->
     </IMG><br/>
       </xsl:if>
      </xsl:for-each>   
      </body>
      </html>
    </xsl:template></xsl:stylesheet>

  4. #4
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 5
    Points : 1
    Points
    1
    Par défaut Trouvé!
    Merci, je viens de trouver une autre méthode et ça a fonctionné!
    Il ne me reste plus qu'à trouvé comment afficher la miniature de la photo devant l'intitulé des articles!

    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
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="XML" version="1.0" encoding="iso-8859-1"/>
    <xsl:template match="/">
      <html>
      <body>
        <xsl:for-each select="NewsML/NewsItem/NewsComponent/NewsComponent/NewsLines">
     <xsl:if test="position() &lt;= 10">
     
     
     
       <a href="http://www.polyfoot.eu/index?option=com_content&amp;task=view&amp;id=310&amp;Itemid=126&amp;article={../NewsItemRef/@NewsItem}" xmlns="http://www.w3.org/1999/xhtml">
     
     
     
      <span class="guide">
     
      <xsl:value-of select="HeadLine"/></span>
       </a><br/>      
      <IMG>
       <!-- -->
       <xsl:attribute name="BORDER">
        <xsl:text>0</xsl:text>
       </xsl:attribute>
       <!-- -->
       <xsl:attribute name="HEIGHT">
        <xsl:text>12</xsl:text>
       </xsl:attribute>
       <!-- -->
       <xsl:attribute name="SRC">peau/pointsroses.gif</xsl:attribute>
       <!-- -->
       <xsl:attribute name="WIDTH">
        <xsl:text>166</xsl:text>
       </xsl:attribute>
       <!-- -->
     </IMG><br/>
       </xsl:if>
      </xsl:for-each>   
      </body>
      </html>
    </xsl:template></xsl:stylesheet>

  5. #5
    Membre éprouvé
    Profil pro
    Responsable Dev
    Inscrit en
    Décembre 2003
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Responsable Dev

    Informations forums :
    Inscription : Décembre 2003
    Messages : 788
    Points : 1 063
    Points
    1 063
    Par défaut
    sinon si tu ne veux pas t'embêter avec les &amp; il suffit d'utiliser une section CDATA

  6. #6
    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
    Citation Envoyé par vatzyaya Voir le message
    Merci, je viens de trouver une autre méthode et ça a fonctionné!
    Euh, introduire un fragment de XHTML dans une page HTML ne me paraît pas une solution viable, en tout cas je te la déconseille fortement.

    D'autre part tu as lu en diagonale la solution que je t'ai donnée : si tu lis bien, les & sont remplacés par leur entité &amp; ...
    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

  7. #7
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 5
    Points : 1
    Points
    1
    Par défaut Texte pas formaté à la sortie
    Mon texte n'est pas formaté à l'affichage de l'article. Quel est le problème selon vous?

    Voici un exemple : http://www.polyfoot.eu/index?option=...6c6f7b.301.xml

    Il semblerait que mes ne sont pas pris en compte...
    Une idée? Voici ce que j'ai fait :

    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
     
    <?php if(isset($_GET ['article'])) {
    $article = $_GET['article'];
    if ($article != "")
    {
    $xh = xslt_create();
     
    $file=fopen("http://www.polyfoot.eu/AFP/francais/special/football/$article","r");
    $xml=fread($file,16384);
    fclose($file);
     
    $xml = ereg_replace ("<p>", "^p", $xml);
    $xml = ereg_replace ("</p>", "p^", $xml);
     
    $file=fopen("http://www.polyfoot.eu/AFP/francais/brutune.xsl","r");
    $xsl=fread($file,16384);
    fclose($file);
     
    $arguments = array(
      '/_xml' => $xml,
      '/_xsl' => $xsl
      );
     
    $result = xslt_process($xh, 'arg:/_xml', 'arg:/_xsl', NULL, $arguments);
     
    $result = str_replace ( "^p", "<p>",  $result);
    $result = str_replace ( "p^", "</p>", $result);
     
    xslt_free($xh);
     
    print "$result";
    }
    }
    ?>

  8. #8
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $xml = ereg_replace ("<p>", "^p", $xml);
    $xml = ereg_replace ("</p>", "p^", $xml);
    C'est quoi, ça ?
    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

  9. #9
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Je t'avoues avoir obtenu le code d'un autre site employant AFP également.
    C'est vrai que si je regarde dans ce fichier :"http://www.polyfoot.eu/AFP/francais/...27c1c8e.01.xml", ça n'a pas l'air très utile

    Je ne comprends vraiment rien à tout celà

Discussions similaires

  1. [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
  2. [XSLT] problème avec attribut name
    Par hippoX dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 17/04/2007, 17h26
  3. xhtml ->xml xsl:attribute name+not valid
    Par yos dans le forum XSL/XSLT/XPATH
    Réponses: 9
    Dernier message: 14/06/2005, 07h27

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