2013-05-24 2 views
1

Если у меня есть тег, который состоит из продолжительности в секундах.XSLT Чтобы вычислить время начала и окончания в зависимости от продолжительности в секундах

<mytag duration="29.473"> 

, и я хочу использовать XSLT, чтобы превратить это что-то вроде ниже, где время_запуска является текущее время и время окончания является текущее время + Продолжительность секунд.

<mytag starttime="date:date-time()" endtime="date:date-time() + duration"> 

Как это можно достичь? Я пробовал xs:dayTimeDuration, но я не уверен, как его использовать и передать в течение продолжительности. Любая помощь будет принята с благодарностью. Я новичок в XSLT. Благодаря!

+0

В XSLT 1.0 и 2.0 значительно меньше времени и времени. Вы должны сообщить нам, какую версию вы используете, иначе любой ответ может быть пустой тратой времени. –

ответ

0

Если вы используете XSLT 2.0, вы можете просто отличить duration как xs:dayTimeDuration. Я также рекомендовал бы сделать текущую переменную dateTime переменной, так что она будет одинаковой во всех местах, где вы ее используете.

Пример ...

XML Input

<mytag duration="29.473"/> 

XSLT 2,0

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="xs"> 
    <xsl:output indent="yes"/> 
    <xsl:strip-space elements="*"/> 

    <xsl:variable name="currDT" select="current-dateTime()"/> 

    <xsl:template match="/*"> 
     <mytag starttime="{$currDT}" endtime="{$currDT + xs:dayTimeDuration(concat('PT',@duration,'S'))}"/> 
    </xsl:template> 

</xsl:stylesheet> 

Выход

<mytag starttime="2013-05-24T16:15:13.346-06:00" 
     endtime="2013-05-24T16:15:42.819-06:00"/> 
+0

Я использую xsltproc (http://xmlsoft.org/XSLT/xsltproc2.html), и когда я использую xs: dayTimeDuration, я получил «xmlXPathCompOpEval: function dayTimeDuration not found». Есть ли лучший процессор с командной строкой? Извините, я новичок во всем этом :) – user2418898

+0

@ user2418898 - xsltproc ограничен XSLT 1.0. Я бы рекомендовал запустить Saxon из командной строки (java). Дайте мне знать, если вы хотите, чтобы я добавил в командной строке пример командной строки. Версия HE бесплатна: http://saxon.sourceforge.net/ Вот ссылка на документы в командной строке: http://www.saxonica.com/documentation/#!using-xsl/commandline –

+0

Работает отлично! Спасибо, Дэниэл! – user2418898