Ajouter des balises à un flux RSS 2.0

HTML5, CSS3, Javascript, support des mobiles... Que penser de votre site ? Vous manquez d'informations pour la construction d'un site qui puisse s'afficher correctement partout ? C'est un problème simple, un peu complexe ? Venez ici !
SB
Varan
Messages : 1095
Inscription : 05 mars 2004, 18:38

Message par SB »

Un bon vieux dessin, y a rien de mieux pour se faire comprendre :
Image
Pour l'url, ce ne sont pas les {} qui posent problème puisque {atom:title} fonctionne. Ça doit être la syntaxe atom:link/atom:href car href n'est pas un sous-element de link mais un attribut. Hélas je ne sais pas comment on récupère la valeur d'un attribut.

Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.0.2) Gecko/20060308 Firefox/1.5.0.2
calimo
Animal mythique
Messages : 14118
Inscription : 26 déc. 2003, 11:51

Message par calimo »

Ok j'ai compris :lol:

Dans fluxrss2.php :

Code : Tout sélectionner

<summary type='xhtml'>Les nouvelles dates de formation aux premiers secours viennent d'être publiées sur le site. Consultez-les sur la page <a href='../afps.php'>AFPS</a>.</summary>
Comme je l'ai dit, ce qui est dans ta balise <summary> est du XHTML. Pour écrire un lien en XHTML, qu'est-ce que tu fais ? Certainement pas :

Code : Tout sélectionner

<a href='../afps.php'>AFPS</a>
Pour écrire un lien, tu écris

Code : Tout sélectionner

<a href='../afps.php'>AFPS</a>
Eh bien là c'est pareil. Tu dois écrire du XHTML !

Ce qui nous donne :

Code : Tout sélectionner

<summary type='xhtml'>Les nouvelles dates de formation aux premiers secours viennent d'être publiées sur le site. Consultez-les sur la page <xhtml:a href='../afps.php'>AFPS</xhtml:a>.</summary>
ou

Code : Tout sélectionner

<summary type='xhtml' xmlns="http://www.w3.org/1999/xhtml">Les nouvelles dates de formation aux premiers secours viennent d'être publiées sur le site. Consultez-les sur la page <a href='../afps.php'>AFPS</a>.</summary>
Je répète encore, ce que tu fais c'est du XHTML :wink:
C'est tout l'avantage des namespaces. Tu peux insérer ce que tu veux, du moment que le namespace est bon. Mais si tu commence à le masquer avec des entités, forcément ça ne marche plus :lol:

Pour l'autre problème, je ne sais pas non plus comment récupérer une valeur d'attribut (comme je l'ai dit je n'y connais rien en XSLT.) Mais je ne doute pas que ce soit possible. En attendant de trouver, tu as l'élément id qui semble contenir le lien… tu peux éventuellement poster un nouveau sujet sur la récupération d'attributs en xslt :wink:
SB
Varan
Messages : 1095
Inscription : 05 mars 2004, 18:38

Message par SB »

calimo a écrit :Comme je l'ai dit, ce qui est dans ta balise <summary> est du XHTML. Pour écrire un lien en XHTML, qu'est-ce que tu fais ? Certainement pas :

Code : Tout sélectionner

<a href='../afps.php'>AFPS</a>
Pour écrire un lien, tu écris

Code : Tout sélectionner

<a href='../afps.php'>AFPS</a>
Eh bien là c'est pareil. Tu dois écrire du XHTML !

Ce qui nous donne :

Code : Tout sélectionner

<summary type='xhtml'>Les nouvelles dates de formation aux premiers secours viennent d'être publiées sur le site. Consultez-les sur la page <xhtml:a href='../afps.php'>AFPS</xhtml:a>.</summary>
Malheureusement non. J'ai déjà essayé mais, si c'est vrai que la balise n'apparait plus en toute lettre, il n'y a tout simplement plus de lien ni dans un agrégateur RSS ni directement sur la page comme tu peux peux le vérifier sur le deuxième item à partir du haut ("Nouvelle formation aux premiers secours" sur le mot AFPS).

Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.0.2) Gecko/20060308 Firefox/1.5.0.2
martin
Varan
Messages : 1074
Inscription : 21 janv. 2004, 16:23

Message par martin »

ok, calimo a raison, il faut que tu utilise les namespaces exactement comme il te le propose.
Le problème ensuite doit se résoudre dans la feuille xslt.
Pour l'instant avec :

Code : Tout sélectionner

<xsl:value-of select="atom:summary"/>
je pense que tu ne récupères que le contenu texte.

essaie à la place quelque chose du genre :

Code : Tout sélectionner

<xsl:call-template name="identity" />
et ailleurs dans ta feuille, définit :

Code : Tout sélectionner

<xsl:template name="identity">
    <xsl:copy-of select="./@*|node()"/>
</xsl:template>
[edit] : euh j'ai été un peu vite, l'idée est là mais il en faut un peu plus. Je reviens...
calimo
Animal mythique
Messages : 14118
Inscription : 26 déc. 2003, 11:51

Message par calimo »

SB a écrit :Malheureusement non. J'ai déjà essayé mais, si c'est vrai que la balise n'apparait plus en toute lettre, il n'y a tout simplement plus de lien ni dans un agrégateur RSS ni directement sur la page comme tu peux peux le vérifier sur le deuxième item à partir du haut ("Nouvelle formation aux premiers secours" sur le mot AFPS).
Ben c'est normal que ça ne marche pas si tu ne définis pas explicitement le namespace ! Tu dois dire explicitement que c'est xhtml:a, sinon pour lui ce morceau de code est un atom:a et ça il ne sait pas ce que c'est :wink:

Donc soit en mettant xhtml:a soit en reprécisant le namespace directement. :)
martin
Varan
Messages : 1074
Inscription : 21 janv. 2004, 16:23

Message par martin »

Dans ton cas çà doit plus ressembler à çà :

remplace :

Code : Tout sélectionner

<xsl:value-of select="atom:summary"/>
par :

Code : Tout sélectionner

<xsl:apply-templates select="atom:summary" />
et crées :

Code : Tout sélectionner

<xsl:template match="atom:summary">
  <xsl:copy-of select="./@*|node()"/>
</xsl:template>
Il faut évidement que tu soit sûr que ton élément summary soit de type 'xhtml'
SB
Varan
Messages : 1095
Inscription : 05 mars 2004, 18:38

Message par SB »

calimo a écrit :
SB a écrit :Malheureusement non. J'ai déjà essayé mais, si c'est vrai que la balise n'apparait plus en toute lettre, il n'y a tout simplement plus de lien ni dans un agrégateur RSS ni directement sur la page comme tu peux peux le vérifier sur le deuxième item à partir du haut ("Nouvelle formation aux premiers secours" sur le mot AFPS).
Ben c'est normal que ça ne marche pas si tu ne définis pas explicitement le namespace ! Tu dois dire explicitement que c'est xhtml:a, sinon pour lui ce morceau de code est un atom:a et ça il ne sait pas ce que c'est :wink:

Donc soit en mettant xhtml:a soit en reprécisant le namespace directement. :)
Tu es têtu. :)
Puisque je te dis que ça marche pas : regarde l'entrée "Deux places de libre sur l'AFPS de mai" sur les mots "inscrivez-vous vite".

Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.0.2) Gecko/20060308 Firefox/1.5.0.2
SB
Varan
Messages : 1095
Inscription : 05 mars 2004, 18:38

Message par SB »

martin a écrit :Dans ton cas çà doit plus ressembler à çà :

remplace :

Code : Tout sélectionner

<xsl:value-of select="atom:summary"/>
par :

Code : Tout sélectionner

<xsl:apply-templates select="atom:summary" />
et crées :

Code : Tout sélectionner

<xsl:template match="atom:summary">
  <xsl:copy-of select="./@*|node()"/>
</xsl:template>
Il faut évidement que tu soit sûr que ton élément summary soit de type 'xhtml'
Erreur lors de la transformation XLST : Échec de transformation XSLT. :(

Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.0.2) Gecko/20060308 Firefox/1.5.0.2
martin
Varan
Messages : 1074
Inscription : 21 janv. 2004, 16:23

Message par martin »

SB a écrit : Erreur lors de la transformation XLST : Échec de transformation XSLT. :(
je viens d'essayer sur une copie en ligne de tes pages, çà marche trés bien :wink: :D
réessaie, place le nouveau template proposé comme un frère (et non un descendant) de ton template principal.
martin
Varan
Messages : 1074
Inscription : 21 janv. 2004, 16:23

Message par martin »

et pour info, le summary modifié est ainsi :

Code : Tout sélectionner

<summary type='xhtml'>Lundi 1er mai, <xhtml:a href='fghgfhg'>nos bénévoles </xhtml:a>seront comme chaque année</summary>
(en utilisant le NS que tu as défini en tête de document)
SB
Varan
Messages : 1095
Inscription : 05 mars 2004, 18:38

Message par SB »

martin a écrit :réessaie, place le nouveau template proposé comme un frère (et non un descendant) de ton template principal.
Comme ça en effet j'obtiens un lien. Mais ça n'a fait que transféré le problème qui était d'obtenir un lien à la fois dans le fil et sur la page. Hors maintenant je n'en ai plus dans le fil. :)

Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.0.2) Gecko/20060308 Firefox/1.5.0.2
martin
Varan
Messages : 1074
Inscription : 21 janv. 2004, 16:23

Message par martin »

SB a écrit :Hors maintenant je n'en ai plus dans le fil. :)
Dans quel lecteur ?
martin
Varan
Messages : 1074
Inscription : 21 janv. 2004, 16:23

Message par martin »

Sinon essaie de virer la déclaration du NS en tête de document, et déclare à chaque balise <a> :

Code : Tout sélectionner

<summary type='xhtml'>Lundi 1er mai, <a href='fghgfhg' xmlns="http://www.w3.org/1999/xhtml">nos bénévoles </a>seront comme chaque année</summary>
la feuille xslt fonctionne toujours, et les lecteurs pas doués s'en sortiront peut être mieux
calimo
Animal mythique
Messages : 14118
Inscription : 26 déc. 2003, 11:51

Message par calimo »

SB a écrit :Comme ça en effet j'obtiens un lien. Mais ça n'a fait que transféré le problème qui était d'obtenir un lien à la fois dans le fil et sur la page. Hors maintenant je n'en ai plus dans le fil. :)
Effectivement, c'est étrange. Je n'ai pas ces liens dans RSS Bandit. Pourtant, il est très stric et respecte habituellement les spécifications à la lettre, mais là je ne comprend pas :?

Bon, sinon, la dernière solution, qui n'est pas forcément la plus satisfaisante : faire un fil, puis une autre PHP page sur laquelle tu affiches le fil en passant par Magpie RSS :roll:
SB
Varan
Messages : 1095
Inscription : 05 mars 2004, 18:38

Message par SB »

Non je crois que le plus simple au final, ça va être de m'abstenir de mettre des liens. :(

Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.0.2) Gecko/20060308 Firefox/1.5.0.2
Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 4 invités