XSLT 1.0 en cours DateTime
J'ai un nœud dans mon fichier XML contenant les éléments suivants:
<Apple>2011-12-01T16:33:33Z</Apple>
Je souhaite profiter de cette ligne et de la remplacer par la date et l'heure en utilisant le même format comme indiqué ci-dessus.
AAAA-MM-JJTHH:MM:SSZ
Le nœud est dans un espace de noms a déclaré que "x"
double possible: stackoverflow.com/questions/500915/...
pas de son pas, il est à la recherche de DATE-HEURE ACTUELLE plutôt que de format.
Voir stackoverflow.com/questions/5475699/... et stackoverflow.com/questions/1575111/.... Si vous ne pouvez pas utiliser XSLT 2.0, l'utilisation d'une fonction de script
pas de son pas, il est à la recherche de DATE-HEURE ACTUELLE plutôt que de format.
Voir stackoverflow.com/questions/5475699/... et stackoverflow.com/questions/1575111/.... Si vous ne pouvez pas utiliser XSLT 2.0, l'utilisation d'une fonction de script
OriginalL'auteur Mike | 2012-02-22
Vous devez vous connecter pour publier un commentaire.
Jouer avec DateTime n'est pas possible avec XSLT 1.0 seul .. Dans une des situations similaires, j'ai pris l'aide de script .. (C#)
XML exemple:
XSLT exemple:
Résultant De Sortie:
Le script peut résider dans un même fichier (comme je l'ai dans mon exemple de code XSLT) ou si le code de déclenchement XSLTransformation est C#, puis déplacez le même code dans l'appel de la place 🙂
heureux de savoir que 🙂
Je voudrais valoriser la solution, mais n'ont pas assez de rep pour le faire 🙁
pour une réponse correcte. Notez, cependant, que l'utilisation de inline
<msxsl:script>
n'est pas recommandé dans le cas d'un serveur de système soumis à une utilisation intensive et dans ce cas il est préférable d'utiliser une extension de l'objet et de ses méthodes publiques. Le problème avec inline<msxsl:script>
est queXslCompiledTransform
génère du code pour le script de façon dynamique, dans la dynamique des assemblages. Si une transformation est exécutée de façon répétée ensuite, les mêmes scripts de générer de nouvelles dynamiques dll -- - ce finalement consomme presque la totalité de la mémoire disponible et nécessite de recyclage.vraiment précieux commentaire 🙂 j'ai en effet été confronté à un problème, en raison de ce problème de code. 🙂 un nettoyage de l'outil utilisé pour supprimer les junk dll, ce qui a causé mon processus de transformation à l'arrêt dans le milieu .. plus tard pour votre suggestion, quand j'ai déménagé ce code à la nouvelle catégorie en vertu de code d'appel a aidé à résoudre le problème 🙂
OriginalL'auteur InfantPro'Aravind'
Il est préférable de transmettre le courant datetime à partir de votre moteur XML. Déclarer
<xsl:param name="current-datetime"/>
dans votrexsl:stylesheet
, et passer la valeur à partir du processeur.OriginalL'auteur Kirill Polishchuk
Vous pouvez passer le courant des données en entrée /xsl:param pour le modèle.
Le XSLT vise à être purement fonctionnelle de la langue; c'est, de tous les modèles /fonctions doivent être conformes à par exemple la condition suivante: Si une pure fonction est appelée avec des paramètres qui n'ont pas d'effets secondaires, le résultat est constante à l'égard de la liste de paramètres (parfois appelé la transparence référentielle), c'est à dire si la fonction pure est de nouveau appelée avec les mêmes paramètres, le même résultat sera renvoyé (on peut activer la mise en cache des optimisations telles que memoization).
Bien qu'il existe des solutions de contournement (comme InfantPro'Aravind' souligné), il est recommandé de ne pas faire de telles choses; en faisant cela, vous êtes en train de détruire l'un des plus importants XSLT avantages.
OriginalL'auteur penartur