Calcul du nombre de jours entre deux dates en XML avec XSLT
J'ai été en cours depuis environ 5 heures maintenant, en essayant exactement CHAQUE exemple trouvé sur Google a trouvé avec les moteurs de recherche terme "xml xslt calculer le nombre de jours entre deux dates" que j'ai pu trouver de il suffit de prendre deux dates de "date.xml" fichier et que le calcul des jours entre les dates dans le format "AAAA-MM-JJ" (exemple ci-dessous n'ont pas ce format, mais c'est le seul format que j'ai besoin)
J'ai enfin trouvé cette page avec:: https://forums.oracle.com/thread/2432132
Où la solution peut être vérifié à l'adresse: http://xslttest.appspot.com/
Mais, l'enregistrement de la "date de.xml/jour.xslt" sur localhost essayer d'ouvrir la page dans Internet Explorer, Google Chrome ou Firefox affiche erreur ou rien du tout et que c'est toujours semblent avoir été - aucune information de ce qui est mal. Le même phénomène se produit lorsque le fichier est sur un serveur web.
Alors, pourquoi ne puis-je pas essayer un exemple simple que j'ai trouvé que tout le monde dit que la solution est ou ce que je fais mal?
Fichier XML à partir de l'exemple ci-dessus:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="date.xslt"?>
<root>
<date1>2012-01-11T00:00:00.000-05:00</date1>
<date2>2012-01-15T00:00:00.000-05:00</date2>
</root>
Fichier XSLT à partir de l'exemple ci-dessus:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:fn="http://www.w3.org/2005/xpath-functions">
<xsl:template match="/">
<xsl:variable name="date1" select="xs:dateTime(/root/date1)"/>
<xsl:variable name="date2" select="xs:dateTime(/root/date2)"/>
<xsl:value-of select="fn:days-from-duration($date2 - $date1)"/>
</xsl:template>
</xsl:stylesheet>
En ajoutant ceci à la XSLT vérificateur, il montre la droite de la valeur "4" jours entre ces deux dates.
Je veux être en mesure de créer un document qui effectivement peut faire des calculs, qu'ils sont des dates ou des nombres, mais il semble impossible à ce moment. Obtenir le nombre de dates, puis faire un peu de calcul avec cette valeur.
OriginalL'auteur Deukalion | 2013-12-10
Vous devez vous connecter pour publier un commentaire.
Votre feuille de style est à l'aide de XSLT version 2.0, uniquement pour les navigateurs support XSLT version 1.0. Et des types de données comme
xs:dateTime
et des fonctions commedays-from-duration
ne sont pas pris en charge dans la version de XSLT 1.0. Donc, vous avez besoin pour exécuter votre XSLT 2.0 avec un processeur XSLT 2.0, comme Saxon 9 (pour Java ou .NET) ou XmlPrime (par .NET) ou avec Saxon CE (dans le navigateur).Si vous souhaitez utiliser XSLT 1.0 avec EXSLT le test http://home.arcor.de/martin.honnen/xslt/test2013121001.xml à l'aide de la http://www.exslt.org/date/functions/difference/date.difference.template.xsl fonctionne parfaitement pour moi avec les versions actuelles de Firefox, Opera et IE.
Il est EXSLT avec une date de soutien, je pense, mais ces jours, je suggère d'utiliser Saxon EC, si vous souhaitez exécuter XSLT dans le navigateur et le besoin des fonctionnalités de XSLT 2.0.
À l'aide de EXSLT n'a même pas fonctionné non plus, rien ne se passe comme d'habitude. <xsl:value-of select="date:différence(xs:date('2013-01-01'), xs:date('2013-01-10')))" /> ou <xsl:value-of select="date:différence('2013-01-10', '2013-01-01'))" />. Comme d'habitude, un très "BIEN" documenté, sans exemples. Le Code s'arrête juste là où il y a erreur et aucune erreur n'est affichée. Et si elles le sont-ils bien vouloir dire "quelque Chose de mauvais."
J'ai ajouté un lien vers un EXSLT de l'échantillon, à l'aide de
call-template
. La fonction de trucs de EXSLT a pire soutien de XSLT 2.0, de mon point de vue, donc je ne peux pas vous aider.vous êtes venus à la question "Calcul du nombre de jours entre deux dates en XML avec XSLT" et j'ai essayé de répondre à cette. Si vous ne souhaitez pas utiliser le format XML ou XSLT ne le faites pas, c'est votre choix. Ou tout simplement passer à XSLT 2.0, qui a la date/dateTime prise en charge intégrée.
OriginalL'auteur Martin Honnen
La feuille de style que vous utilisez requiert un XSLT 2.0 processeur compatible. Je ne pense pas que l'un des navigateurs support XSLT 2.0. Les calculs de Date en XSLT 1.0 sont plus difficiles.
OriginalL'auteur michael.hor257k