sdx-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [sdx-users] pbm de compréhension de ' document.xsl' dans 'sdxworld'


From: Pierrick Brihaye
Subject: Re: [sdx-users] pbm de compréhension de ' document.xsl' dans 'sdxworld'
Date: Fri, 11 Apr 2003 17:06:55 +0200
User-agent: Mozilla/5.0 (Windows; U; Win98; fr-FR; rv:1.0.2) Gecko/20030208 Netscape/7.02

Bonjour,

OSO a écrit:

Quelqu'un pourait-il m'expliquer comment se déroule le processus
d'appel des règles (apply-template) pour que dans la page html
résultante l'image et le titre s'affiches AVANT les url et mail alors
que dans la feuille de style document.xsl la règle qui s'applique aux
éléments images apparait APRES les règles relatives aux éléments
"adresse" et "email".

Je n'ai pu vérifier sur sdxworld. Je l'ai fait sur sdxtest qui est dans le CVS. Mais bon, ça devrait correspondre.

Premièrement, quand on appelle <xsl:apply-templates>, c'est l'ordre du document transformé qui s'applique. Celui de la XSL n'est *jamais* significatif ; vous pouvez donc organiser vos templates comme vous le désirez.

Etant donné que, dans le document, on a une structure :

<projet id="xxx">
  <titre>bla</titre>
  <adresses>
    <adresse>bla</adresse>
  </adresses>
  <images>
    <image src="yyy" id="aaa" mime-type="image/jpeg"/>
  </images>
  <responsable>
   <nom>bla</nom>
   <prenom>bla</prenom>
   <email>bla</email>
  </responsable>
  <description>
bla
  </description>
</projet>

... il est donc logique que <xsl:apply-templates> traite le titre en premier, ensuite les adresses, etc.

Il y a une (petite) subtilité qui permet, contrairement à <xsl:apply-templates> de *contrôler* le flux :

<xsl:template match="titre">
  <tr>
    <td>
      <xsl:if test="../images/image/@id">
<img src="{/sdx:document/@api-url}/getatt?app={/sdx:document/@app}&amp;id={../images/image/@id}" alt="Image attachée"/>
      </xsl:if>
     </td>
     <td>
      <h1>
        <xsl:apply-templates/>
      </h1>
      </td>
    </tr>
</xsl:template>

Voici donc pourquoi l'image est affichée avant le titre : on va *explicitement* la chercher. Il n'y a d'ailleurs pas de template pour l'élément "image" et, de surcroît le modèle de son conteneur est vide :

<xsl:template match="images"/>

... ce qui empêche le traitement par défaut (copie du noeud texte) ; c'est la manière normale de travailler en XSL.

BTW : votre problème est un pur problème XSL et SDx n'a rien à voir là-dedans :-)

A bientôt,

--
Pierrick Brihaye, informaticien
Service régional de l'Inventaire
DRAC Bretagne
mailto:address@hidden





reply via email to

[Prev in Thread] Current Thread [Next in Thread]