Как добавить две отметки времени в xslt - PullRequest
1 голос
/ 15 апреля 2011
<LogFormat> 
 <TestHeading>
    <TestName>abc</TestName>
    <TestDuration>00:08:80</TestDuration>
  <TestHeading>
  <TestHeading>
    <TestName>pqr</TestName>
    <TestDuration>00:00:10</TestDuration>
  <TestHeading>
<LogFormat>

Я хочу добавить все теги TestDuration (т. Е. 00:00:10 и 00:08:80) файла XML.и я проверил ' Суммирование чисел с запятой в качестве десятичного разделителя в XSLT? ', но это не сработало.Пожалуйста, помогите кому-нибудь .. Заранее спасибо ..

1 Ответ

0 голосов
/ 15 апреля 2011

Эта таблица стилей:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:strip-space elements="*"/>
    <xsl:template match="LogFormat">
        <xsl:apply-templates select="TestHeading[1]"/>
    </xsl:template>
    <xsl:template match="TestHeading">
        <xsl:param name="pSum" select="0"/>
        <xsl:variable name="vNext"
         select="following-sibling::TestHeading[1]"/>
        <xsl:variable name="vSum"
         select="$pSum + substring(TestDuration,1,2) * 3600
                       + substring(TestDuration,4,2) * 60
                       + substring(TestDuration,7)"/>
        <xsl:apply-templates select="vNext">
            <xsl:with-param name="pSum" select="$vSum"/>        
        </xsl:apply-templates>
        <xsl:if test="not(vNext)">
            <xsl:value-of
             select="concat(format-number(floor($vSum div 3600),'00'),
                            ':',
                            format-number(floor($vSum mod 3600 div 60),'00'),
                            ':',
                            format-number($vSum mod 60,'00'))"/>
        </xsl:if>
    </xsl:template>
</xsl:stylesheet>

Выход:

00:09:20
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...