Question aux pros du XSLT: des alternatives portables a <msxml:script>

Question aux pros du XSLT: des alternatives portables a <msxml:script> - HTML/CSS - Programmation

Marsh Posté le 28-08-2002 à 12:49:23    

J'aimerais savoir s'il y a des alternatives non propriétaires a l'extension <msxml:script>?
Typiquement, je veux passer le jour, mois et année courants comme 3 parametres d'un template nommé xslt. Or pas de fonction date en xslt, et la seule methode que j'ai trouvé permettant de  communiquer a un parametre xslt une valeur retournée par une fonction d'un langage de script, c'est au moyen de <msxml:script>.
C'est d'ailleurs tres bien, cette extension microsoft, syntaxiquement clean, mais si il y a que IE qui la supporte, ca m'ennuie un peu.
Avec msxsl:script, j'ai en gros un truc (simplifié ici) comme ceci:

Code :
  1. <?xml version='1.0'?>
  2. <xsl:stylesheet version="1.0"
  3.       xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  4.       xmlns:msxsl="urn:schemas-microsoft-com:xslt"
  5.       xmlns:gilou="http://forum.hardware.fr/gilou">
  6. <msxsl:script language="JavaScript"
  7.       implements-prefix="gilou">
  8. <![CDATA[
  9. function getmonth() {
  10.       theDate = new Date();
  11.       return (theDate.getMonth());
  12. }
  13. ]]>
  14. </msxsl:script>
  15. .................................
  16. <!-- Et qque part plus loin, l'utilisation: -->
  17. <xsl:call-template name="week">
  18. <xsl:with-param name="month" select="gilou:getmonth()"/>
  19. </xsl:call-template>
  20. ..................................
  21. </xsl:stylesheet>


A+,


Message édité par gilou le 28-08-2002 à 13:04:05

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 28-08-2002 à 12:49:23   

Reply

Marsh Posté le 29-08-2002 à 07:11:49    

Bon, hop, je vais donner la solution non proprietaire...
Parce que les membres du w3c se sont justement etripes [petition publique contre...] sur un element <xsl:script>, cloné sur le <msxsl:script> qui avait ete introduit dans le draft de xsl 1.1 et a disparu de xsl 2.0.
 
Donc la methode du standard, c'est:

  • Definir une xsl:function.  
  • Dans le corps de cette xsl:function, appeller xf:current-dateTime()  afin de récupérer la date, éventuellement la reformater à l'aide d'opérateurs XPath.

c'est à dire écrire quelque chose comme:

Code :
  1. <xsl:function name="gmaricha:getmonth">
  2. <xsl:result select="
  3. xf:get-month-from-dateTime(xf:current-dateTime())
  4. "/>
  5. </xsl:function>


  • Utiliser cette fonction plus loin dans la feuille de style
Code :
  1. <xsl:call-template name="week">
  2. <xsl:with-param name="month" select="gmaricha:getmonth()"/>
  3. </xsl:call-template>


 
Un peu bourrin, mais bon.
Le seul probleme, c'est que pour faire ça faut un parser qui supporte xslt 2.0 (en cours de specification), xpath 2.0 et xquery, les xml schemas, et que sais-je encore... Bref un truc qui sera pas integre dans les browsers avant un bail.
A+,


Message édité par gilou le 29-08-2002 à 07:13:55

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Sujets relatifs:

Leave a Replay

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