🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: fr.comp.text.xml
2 messages
2 total messages Started by Une Bévue Mon, 13 Feb 2012 17:12
xsl:sort et arrangement par colonnes
#254
Author: Une Bévue
Date: Mon, 13 Feb 2012 17:12
74 lines
3835 bytes
ma feuille xsl sort sur trois colonnes les noms de personnes (et t�l,
adresse etc) contenus dans mon carnet d'adresse et je pratique un
xsl:sor.

extrait de ma feuille :
<xsl:if test="($mode = 'group')">
  <div id="un">
    <xsl:apply-templates select="people/person[@group=$group]"
mode="group_trois">
      <xsl:sort select="name/text()" lang="{$lang}" data-type="text"
order="ascending" case-order="upper-first"/>
      <xsl:with-param name="col" select="1"/>
      <xsl:with-param name="col_parite" select="1"/>
    </xsl:apply-templates>
  </div>
  <div id="zero">
    <xsl:apply-templates select="people/person[@group=$group]"
mode="group_trois">
      <xsl:sort select="name/text()" lang="{$lang}" data-type="text"
order="ascending" case-order="upper-first"/>
      <xsl:with-param name="col" select="0"/>
      <xsl:with-param name="col_parite" select="1"/>
    </xsl:apply-templates>
  </div>
  <div id="deux">
    <xsl:apply-templates select="people/person[@group=$group]"
mode="group_trois">
      <xsl:sort select="name/text()" lang="{$lang}" data-type="text"
order="ascending" case-order="upper-first"/>
      <xsl:with-param name="col" select="2"/>
      <xsl:with-param name="col_parite" select="0"/>
    </xsl:apply-templates>
  </div>
</xsl:if>

et le template appell� :
<xsl:template match="people/person" mode="company_trois">
  <xsl:param name="col"/>
  <xsl:param name="col_parite"/>
  <xsl:variable name="rang" select="position()"/>
  <xsl:if test="$rang mod 3 = $col">
    <xsl:if test="($rang mod 2 = $col_parite)">
      <div class="pair">
        <xsl:apply-templates select="name"/>
      </div>
    </xsl:if>
    <xsl:if test="not($rang mod 2 = $col_parite)">
      <div class="impair">
        <xsl:apply-templates select="name"/>
      </div>
    </xsl:if>
  </xsl:if>
</xsl:template>

l'ordre obtenu est vertical :

[ A ][ M ][ V ]
[ B ][ N ][ W ]
...
[ L ][ U ][ Z ]

je pr�f�rerais un ordre "horizontal", qui me semble plus "user friendly"
: :
[ A ][ B ][ C ]
[ D ][ E ][ F ]
...
[ X ][ Y ][ Z ]

mais je ne vois pas comment faire compte-tenu de mes trois colonnes...
-- 
  � On devrait fonder une chaire pour l'enseignement de la lecture 
    entre les lignes. � 
    (L�on Bloy) 
Résolu : xsl:sort et arrangement par colonnes
#255
Author: Une Bévue
Date: Mon, 13 Feb 2012 17:26
11 lines
1878 bytes
Une B�vue <unbewusst.sein@fai.invalid> wrote:

> mais je ne vois pas comment faire compte-tenu de mes trois colonnes...

�a roule, j'ai post� avant de finir mes modifs...
d�sol� pour le bruit ;-)

-- 
  � On devrait fonder une chaire pour l'enseignement de la lecture 
    entre les lignes. � 
    (L�on Bloy) 
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads