๐Ÿš€ go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: fr.comp.text.xml
Article #8341

Re: xslt

#8341
From: Alain Ketterlin
Date: Wed, 21 Nov 2001 09:47
72 lines
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-mail
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>

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"