J'ai un fichier XHTML2 que je souhaite transformer en un équivelent
HTML4 ou XHTML1.1. Dans le fichier d'origine, j'ai une instruction de
traitement XML xml-stylesheet. Je souhaiterais exploiter cette
instruction de traitement XML pour créer un l'élément link dans le
document (X)HTML.
Le problème est que les processing instructions ne sont pas traitées
comme des éléments. C'est logique, mais du coup, les « attributs » ne
sont parsés. Le contenu du nœud est considéré comme du texte.
La conséquence est que je ne peux pas intégrer le contenu à un
élément link.
<xsl:template match='processing-instruction()'>
<link><!-- comment intègre-t-on la valeur ? --></link>
<!-- ceci affiche la liste des « attributs » -->
<xsl:value-of select='.' />
</xsl:template>
Avez-vous une solution ?
Merci !
--
Mickaël Wolff aka Lupus Michaelis
http://lupusmic.org
Seeking for a position <http://lupusmic.org/pro/>
> Le problème est que les processing instructions ne sont pas traitées
> comme des éléments. C'est logique, mais du coup, les « attributs » ne
> sont parsés. Le contenu du nœud est considéré comme du texte.
Oui, c'est effectivement du texte brut (qui n'est pas considéré comme
faisant partie du contenu du document, mais est destiné à l'application.
> <xsl:template match='processing-instruction()'>
> <link><!-- comment intègre-t-on la valeur ? --></link>
>
> <!-- ceci affiche la liste des « attributs » -->
> <xsl:value-of select='.' />
> </xsl:template>
>
> Avez-vous une solution ?
A grands coups de substring-before, substring-after etc. Au pif:
<xsl:value-of
select="substring-before(substring-after(.,'href="'),'"')"/>
-- Alain.
J'aurais dû rajouter le qualificatif « élégant » ;) À force de
fouiller, je me suis rendu compte qu'il existait une version 2.0 de
XSLT, et qu'ils y avaient ajouté des choses intelligentes :
<http://www.w3.org/TR/xslt20/#regular-expressions>
Mais en cherchant des ressources sur XSLT, on ne trouve que des
ressources parlant de XSLT 1.0. Forcément, on trouve difficilement.
Merci pour ta proposition !
> Alain Ketterlin a écrit :
>>> Avez-vous une solution ?
>>
>> A grands coups de substring-before, substring-after etc. Au pif:
>
> J'aurais dû rajouter le qualificatif « élégant » ;)
Ce qui est subjectif, bien sûr.
> À force de fouiller, je me suis rendu compte qu'il existait une
> version 2.0 de XSLT
Vérifie quand même si ton moteur implémente 2.0. Ou alors EXSLT, qui
intègre des expressions régulières.
-- Alain.