Page 2 sur 3

Publié : 01 mai 2006, 19:48
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

Publié : 01 mai 2006, 21:20
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:

Publié : 01 mai 2006, 23:07
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

Publié : 02 mai 2006, 10:26
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...

Publié : 02 mai 2006, 10:29
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. :)

Publié : 02 mai 2006, 10:35
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'

Publié : 02 mai 2006, 10:38
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

Publié : 02 mai 2006, 10:44
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

Publié : 02 mai 2006, 10:57
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.

Publié : 02 mai 2006, 11:00
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)

Publié : 02 mai 2006, 11:59
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

Publié : 02 mai 2006, 12:12
par martin
SB a écrit :Hors maintenant je n'en ai plus dans le fil. :)
Dans quel lecteur ?

Publié : 02 mai 2006, 12:24
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

Publié : 02 mai 2006, 19:26
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:

Publié : 03 mai 2006, 10:39
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