Problème de mode :/

Problème de mode :/ - XML/XSL - Programmation

Marsh Posté le 29-09-2004 à 11:16:26    

Hello :hello:
 
Bon, j'ai un xml en entrée qui contient la description de champs de saisie.
Chaque champ est défini par un tag <field type="type de champ"> et contient bien sûr plein d'autres infos dont on se moque ici.
 
Pour générer la sortie HTML ( enfin XHTML :D ), j'utilise une feuille de style XSL.
Dans cette feuille, j'ai un template pour chaque type de champ, genre :
 

<xsl:template select="field" mode="type de champ">...


 
Le problème, c'est de se brancher facilement sur le bon template.
 
Je pensais faire un truc du genre :
 

<xsl:template select="field">
    <xsl:apply-templates select="." mode="@type">
</xsl:template>


 
Et bien, c'est pas possible :/ L'attribute mode doit être un CName.
Je fait donc :
 

<xsl:template select="field">
 <xsl:choose>
  <xsl:when test="@type='text'"><xsl:apply-templates select="." mode="text" /></xsl:when>
  <xsl:when test="@type='num'"><xsl:apply-templates select="." mode="num" /></xsl:when>
  <xsl:when test="@type='date'"><xsl:apply-templates select="." mode="date" /></xsl:when>
  <xsl:when test="@type='email'"><xsl:apply-templates select="." mode="email" /></xsl:when>
 </xsl:choose>
</xsl:template>


 
C'est pas bien grâve en soit, mais ça me gonfle d'être obligé de faire un truc aussi con :fou:
 
Si vous avez l'astuce qui tue, merci de la partager :jap:


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 29-09-2004 à 11:16:26   

Reply

Marsh Posté le 29-09-2004 à 11:21:47    

Ok, le coup des apply-templates est lourd, il vaut sans doute mieux faire comme ça :
 

<xsl:template select="field">
 <xsl:choose>
  <xsl:when test="@type='text'"><xsl:call-template name="text-field" /></xsl:when>
  <xsl:when test="@type='num'"><xsl:call-template name="text-num" /></xsl:when>
  <xsl:when test="@type='date'"><xsl:call-template name="text-date" /></xsl:when>
  <xsl:when test="@type='email'"><xsl:call-template name="text-email" /></xsl:when>
 </xsl:choose>
</xsl:template>


 
Mais si je pouvais m'en passer...


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed