Bonjour à tous,

Je ne sais pas si je suis au bon endroit... désolée par avance...

Voilà, je ne connais pas spécialement le xml et j'ai un bannière en flash que j'ai mis en place sur un site pour un client qui contient du xml.
Ce fichier xml permet d'afficher du texte sur la bannière d'une couleur et a des positions différentes, ainsi que d'afficher les images de fond.

Le client en est content seulement, il voudrait que pour le texte la 1ère lettre de chaque phrase soit d'une couleur différente du reste du mot (exemple : Menuiserie, "M" en rouge et "enuiserie" en gris)

Est-il possible de faire ceci ? Merci de votre réponse Smiley smile

Voici le code :
<?xml version='1.0' encoding='UTF-8' ?>
<header_vars>
<graphics_color>FFFFFF</graphics_color>
<animation_loop>no</animation_loop>

<header>
	<text_header_h1 x_pos="115" y_pos="25" size="19" letter_spacing="0" text_color="000000">MENUISERIE ALUMINIUM LOUHANNAISE</text_header_h1>	
	<image blur="no">images/flash_banniere/01.jpg</image>
</header>	
<header>
	<image>images/flash_banniere/02.jpg</image>
</header>	
<header>
	<text_header_h1 x_pos="10" y_pos="10" size="23" letter_spacing="0" text_color="DADADA">FABRICANT ACIER</text_header_h1>	
	<image>images/flash_banniere/03.jpg</image>
</header>
<header>	
	<image>images/flash_banniere/04.jpg</image>
</header>
<header>
	<text_header_h1 x_pos="10" y_pos="90" size="18" letter_spacing="0" text_color="DADADA">SEUIL BETON</text_header_h1>	
	<image>images/flash_banniere/05.jpg</image>
</header>
<header>
	<image>images/flash_banniere/06.jpg</image>
</header>
<header>
	<text_header_h1 x_pos="270" y_pos="230" size="18" letter_spacing="1.5" text_color="DADADA">FABRICANT ALUMINIUM</text_header_h1>	
	<image>images/flash_banniere/07.jpg</image>
</header>
<header>
	<text_header_h1 x_pos="0" y_pos="290" size="19" letter_spacing="0" text_color="DADADA">FABRICANT PVC</text_header_h1>	
	<image>images/flash_banniere/08.jpg</image>
</header>	


<display_preload graphic_color="669ac6">yes</display_preload>
<replay display="yes" x_pos="510" y_pos="308" size="8" letter_spacing="1" bgd_color="FFFFFF" text_color="000000">LECTURE</replay>
</header_vars>
Salut Sebrilia

Ben il y a plusieurs solutions, celle que je te propose est assez facile à mettre en oeuvre et permet de créer un modèle aui peut être réutilisé dans tout le doc :

1. isole la première lettre dans le fichier XML en créant le sous élément <firstetter>...(mais tu peux choisir le nom qui te convient, c'est un des avantages de XML) qui contient la première lettre soit :

<élementPère.......><firstLetter>M</firstletteur>enuiserie ......</élémentPère>


2. Applique lui un template dans la feuille se style XSL soit :


<xsl:template match="firstLetter">
<span class="firstLetter"><xsl:value-of select="."/></span>
</xsl:template>


3. dans une feuille se style CSS par exemple (mais tu peux varier le style à ta guise


.firstLetter  { color:red;font-weight:bold;}


3. bis
tu pourrais insérer le style CSS directement dans le template principal de la feuille XSL

3. ter

tu pourrais aussi remplacer l'élément span du template par la balise html <font>


<font color="red"><xsl:..../></font>


mais c'est moins élégant et plus conforme aux recommandations W3C.
</xsl:template>


4. Une autre solution consisterait simplement à isoler la première lettre directement dans la feuille de style XSL sans modifier le doc XML, pour cela il faut manipuler les chaines de caractères en éclatant la phrase avec les fonctions : substring-before(...,...) et substring-after(...,....) puis à lui appliquer le syle particulier voulu soit :

<span class="firstLetter"><xsl:value-of select="substring-before('e','Menuiserie Louhannaise')"/></span><span class="textAfter"><substring-after('M','Menuiserie Louhannaise')"/>


A toi de choisir !
Modifié par rimousky (08 Jan 2012 - 17:47)
<xsl:template match="firstLetter">

<span class="firstLetter"><xsl:value-of select="."/></span>

</xsl:template>


Il faut le mettre a quel endroit de la page xml ? Désolée pour la question bête mais ne m'y connaissant pas, je suis un peu perdue Smiley ohwell