Article View: fr.comp.text.xml
Article #8341Re: xslt
From: Alain Ketterlin
Date: Wed, 21 Nov 2001 09:47
Date: Wed, 21 Nov 2001 09:47
72 lines
3743 bytes
3743 bytes
Philippe Batailler <pbatailler@teaser.fr> writes:
[...]
> non, seul le otherwise l'ouvre.
Et qui la ferme ?
> structure source structure arriv๏ฟฝe
> taglist variablelist
> varlistentry
> tag term
> tag term
> tag term
> item listitem
> tag </varlistentry>
> item varlistentry
> term
> listitem
> </taglist> </varlistentry>
> </variablist>
Aie, dur. Quand je dis que c'est la structure de sortie qui guide la
transfo, voila ce que je veux dire dans ce cas :
- il faut un varlistentry pour chaque premier tag, qui englobe ce tag
et ses suivants, ainsi que l'item qui arrive apres
- il faut un term pour chaque tag
- il faut un listitem pour chaque item
La difficulte ici est de separer les groupes qui vont donner lieu a un
varlistentry. L'idee est de reperer les "premiers" tags. Par exemple :
<xsl:apply-templates select="tag[not(preceding-sibling::*[1]/self::tag)]"
mode="liste"/>
(tout tag qui n'est pas precede par un autre tag). Ensuite on ecrit le
template pour ces tags :
<xsl:template match="tag" mode="liste">
<varlistentry>
<xsl:call-template select="." name="liste-entree"/>
</varlistentry>
</xsl:template>
J'ai rien trouve d'autre qu'un template recursif pour traiter chaque
paquet :
<xsl:template name="liste-entree">
<xsl:choose>
<xsl:when test="self::tag">
<term>
<xsl:value-of select="."/>
</term>
<xsl:call-template select="following-sibling::*[1]"
name="liste-entree"/>
</xsl:when>
<xsl:otherwise>
<listitem>
<xsl:value-of select="."/>
</listitem>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
Je ne sais pas si le <xsl:value-of> convient a ce que tu veux, sinon
remplacer par <xsl:apply-templates> et definit les templates
correspondants. Cela suppose aussi qu'il n'y a rien d'autre que des
tag et des item, sinon chaque autre element sera pris pour un item.
Evidemment, je n'ai pas teste.
-- Alain.
Technical Details
Message-ID:
<wyelms78w8.fsf@polya.u-strasbg.fr>Path:
arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!news.tele.dk!small.news.tele.dk!213.56.195.71!fr.usenet-edu.net!usenet-edu.net!ciril.fr!news.u-strasbg.fr!not-for-mailReferences:
<87lmh2g5wn.fsf@clalis.pclnet> <wyu1vq3kmq.fsf@polya.u-strasbg.fr> <87n11hn7p7.fsf@clalis.pclnet> <wysnb97t88.fsf@polya.u-strasbg.fr> <87r8qt2nnw.fsf@clalis.pclnet> <wypu6c7gjk.fsf@polya.u-strasbg.fr> <87u1vo7c6r.fsf@clalis.pclnet> <wyk7wk7dyn.fsf@polya.u-strasbg.fr> <871yisv34b.fsf@clalis.pclnet>Show Full Headers
Complete Article Headers
X-Google-Language: FRENCH,ASCII X-Google-Thread: 114f60,6f15fa792995f48a X-Google-Attributes: gid114f60,public X-Google-ArrivalTime: 2001-11-21 02:36:28 PST Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!news.tele.dk!small.news.tele.dk!213.56.195.71!fr.usenet-edu.net!usenet-edu.net!ciril.fr!news.u-strasbg.fr!not-for-mail From: Alain Ketterlin <alain@dpt-info.u-strasbg.fr> Newsgroups: fr.comp.text.xml Subject: Re: xslt Date: 21 Nov 2001 10:47:35 +0100 Organization: CRC - Universite Louis Pasteur Strasbourg France Lines: 72 Message-ID: <wyelms78w8.fsf@polya.u-strasbg.fr> References: <87lmh2g5wn.fsf@clalis.pclnet> <wyu1vq3kmq.fsf@polya.u-strasbg.fr> <87n11hn7p7.fsf@clalis.pclnet> <wysnb97t88.fsf@polya.u-strasbg.fr> <87r8qt2nnw.fsf@clalis.pclnet> <wypu6c7gjk.fsf@polya.u-strasbg.fr> <87u1vo7c6r.fsf@clalis.pclnet> <wyk7wk7dyn.fsf@polya.u-strasbg.fr> <871yisv34b.fsf@clalis.pclnet> NNTP-Posting-Host: polya.u-strasbg.fr X-Trace: news.u-strasbg.fr 1006343850 26896 130.79.44.199 (21 Nov 2001 11:57:30 GMT) X-Complaints-To: usenet@u-strasbg.fr NNTP-Posting-Date: 21 Nov 2001 11:57:30 GMT X-Newsreader: Gnus v5.6.45/XEmacs 21.1 - "Capitol Reef"