2016-05-26 3 views
-1

Я получаю сообщение об ошибке, которое говорит о том, что мой шаблон total-seconds-расчет не существует. Я делаю что-то не так с циклом for-each, который бросает ошибку на меня?XSLT Iterations over

Мой текущий код:

<xsl:template match="Total-Seconds-Calculation"> 

    <xsl:for-each select="//SEGMENTS[TX_PART = '1']"> 
     <xsl:value-of select="DUR"/> 
     <xsl:variable name="Hours" select="substring($DUR,1,2)" /> 
     <xsl:variable name="Minutes" select="substring($DUR,4,2)" /> 
     <xsl:variable name="Seconds" select="substring($DUR,7,2)" /> 
     <xsl:variable name="TotalSeconds" select="(($Hours*3600)+($Minutes*60)+($Seconds))" /> 
    </xsl:for-each> 
</xsl:template> 

<xsl:variable name="TotalDurationShow"><xsl:call-template name="Total-Seconds-Calculation"></xsl:call-template></xsl:variable> 

То, что я пытаюсь сделать, это разобрать этот код времени и сложить общее количество секунд DUR. Вот часть XML, которую я использую:

<SEGEMENTS> 
    <DUR>00:12:33:21</DUR> 
    <TX_PART>1</TX_PART> 
</SEGEMENTS> 
<SEGEMENTS>> 
    <DUR>00:08:26:16</DUR> 
    <TX_PART>1</TX_PART> 
</SEGEMENTS> 
+0

Что говорит сообщение об ошибке? И что вы пытаетесь сделать с этим кодом? В частности, почему вы объявляете переменные, которые вы никогда не используете или не ссылаетесь? –

+0

@C. M. Sperberg-McQueen Сообщение об ошибке давало мне недопустимый шаблон, теперь шаблон просто не создает никакого вывода. Переменные объявляются для вычисления последней переменной TotalSeconds, которая явно находится в шаблоне. – hguza

+0

Похоже, что заданный вами вопрос (почему он говорит, что мой шаблон не существует?) Был дан ответ. Вы должны принять ответ bjimba, и если у вас появятся новые вопросы (например: почему этот код не делает то, что я хочу ему делать?), Вы можете задать их в отдельных вопросах. Или вы, возможно, захотите ознакомиться с областями переменных в XSLT и подумать о том, что XSLT не имеет мутации: это язык с однократным назначением. –

ответ

0

Если вы хотите позвонить по шаблону по имени, вы должны его назвать.

<xsl:template name="Total-Seconds-Calculation"> 

Вы можете иметь как атрибут name и атрибут match, если вы хотите, хотя я никогда не нашел хорошее применение для этого.