Bonjour,

Mon problème est que je recoit une date au format XML: 2005-02-16

et je doit la transformer en: 16.02.2005. Y a t'il un moyen de faire ca avec un xslt?

Je fais ca dans le cadre d'une transformation d'un xml en wordml et avec les balises wordml moi j'en ai trouvé aucune qui fasse ca(j'ai trouvé celle qui renvoit la date courrante mais je peux pas y mettre une fonction xsl:value-of a la place). y en a t'il une qui permette de faire ca avec wordml?

Dans tout les cas merci de vos réponses ou idées!!!

++

Thierry
Modifié par virgul (21 Feb 2005 - 16:16)
C'est quoi wordml ?
Enfin si tu utilises XSLT et donc XPATH tu disposes des fonctions : substring-before(), substring-after() et contains() qui te permettront de t'en sortir.
Salut,

Wordml c'est l'équivalent de xsl:fo pour les pdf. Magnifique est assez simple a comprendre.
L'addresse pour comprendre comment ca marche si ca t'intéresse:

Lien
(Edit : merci de ne pas mettre d'url sous forme trop longue, cela déforme l'affichage)

Merci pour idée ca marche je n'y avais pas pensé!

Et maintenant si je veux 12. janvier 2005 pour obtenir le janvier je fait un choose qui a chaque mois(nb) me renvois le nom(janvier, février,..).

Mais y a t'il une alternative?


Encore un autre petit truc pas facile comment faire pour afficher 2'300 et pas 2300? Une idée

Merci de pour ton aide

++

Thierry
Modifié par Raphael (17 Feb 2005 - 15:35)
J'avais fais un truc de barjot dans le genre une fois

	<xsl:variable name="date_norm" select="date" />
	<xsl:variable name="an" select="substring($date_norm, 1, 4)" />
	<xsl:variable name="mois" select="substring($date_norm, 6, 2)" />
	<xsl:variable name="jour" select="substring($date_norm, 9, 2)" />
	<xsl:variable name="heure" select="substring($date_norm, 12, 2)" />
	<xsl:variable name="minutes" select="substring($date_norm, 15, 2)" />
	
	<xsl:variable name="date_complete" select="concat($jour, '/', $mois, '/', $an, ' à  ', $heure, 'h', $minutes)" />
	<p class="date">le <xsl:value-of select="$date_complete" /></p>

Ca m'a pas l'air très propre, mais ça fonctionne Smiley lol
Avec les dates dans le XML comme ça

<date>2003-05-03 09:20:59</date>
Merci pour ton lien Thierry.
Je fais même un détour pour en parler. Après l'avoir lu, je comprends pourquoi je ne connaissais pas. Dès le début je vois :
a écrit :
il s’agit d’un schéma que vous devrez respecter pour écrire un document Word en XML
Déjà je commence à avoir un arrière goût dans la bouche. Puis plus loin :
a écrit :
mettre un fichier Word en Word XML (WordML) va faciliter la lecture de document sous différentes plateformes Windows, Linux… sans avoir forcément OpenOffice qui ne marche pas tout le temps...
Là je me demande maintenant quelle cuisine je suis en train d'avaler. Enfin je suis allé voir un peu plus loin le code. C'est sur maintenant, je ne me plongerais là dedans qu'en cas de nécessité extrême.
Mais revenons à ton problème:
a écrit :
Et maintenant si je veux 12. janvier 2005 pour obtenir le janvier je fait un choose qui a chaque mois(nb) me renvois le nom(janvier, février,..)
Il y a plein de solutions. Ton choose est certainement pragmatique. Maintenant si tu veux plus modulaire, tu peux avoir tes mois dans un document XML externe que tu appelles avec la fonction document(). Ensuite tu peux envisager différentes formes de calendriers via différents documents externes (pour disposer du choix entre Janvier, janvier, Janv, January...) et tu switches par un paramètre à l'appel de la feuille XSLT le type de calendrier choisi.
a écrit :
Encore un autre petit truc pas facile comment faire pour afficher 2'300 et pas 2300?
Avec string-length(), substring() et concat().
Xavier a écrit :
Encore un autre petit truc pas facile comment faire pour afficher 2'300 et pas 2300?
Avec string-length(), substring() et concat().

Ok mais tu pourrais pas me donné un plus de syntax car la je comprend pas trop comment tu peux faire.


Pour ce qui est de WordML moi je n'ai pas le prob de openoffice ton mes user sont sous word 2003.

De plus j'ai pas le choix j'avais aussi la gorge sèche au début mais une fois qu'on est dedans...
Modifié par virgul (17 Feb 2005 - 16:33)
virgul a écrit :
Avec string-length(), substring() et concat().
Ok mais tu pourrais pas me donné un plus de syntax car la je comprend pas trop comment tu peux faire.


Mon message doit être invisible [smiley qui sifflotte]
@Olivier>Il est visible, mais nous n'avons pas vu en quoi il réponds à la question Smiley cligne

@virgul> En reprenant ton exemple :
<xsl:param name="nombre" select="'2300'"/>
<xsl:param name="quote" >'</xsl:param>
<xsl:value-of     select="concat(substring($nombre,1,string-length($nombre)-3),$quote,substring($nombre,string-length($nombre)-2,3))"/>
Merci beaucoup pour aide ca m'a vraiment aidé !!!


Mais j'ai trouvé un autre truc beaucoup plus simple et plus standard on va dire:

<xsl:number value="my:EinbezKapital" grouping-separator="'" format="1" grouping-size="3"/>


++

Thierry
Euh, bah comment utiliser substring
dans mon code :

 <xsl:variable name="mois" select="substring($date_norm, 6, 2)" />


Comment convertir une date, mon code fait passer une date du format
2003-05-03 09:20:59 au format 03/05/2003 à 9h20 en utilisant concat comme demandé aussi
select="concat($jour, '/', $mois, '/', $an, ' à ', $heure, 'h', $minutes)"

En effet, ça ne répond pas à la question
formater la date
ou
Ok mais tu pourrais pas me donné un plus de syntax car la je comprend pas trop comment tu peux faire.

Peut être une parole vaudou ...