2016-05-26 16 views
-1

テンプレートtotal-seconds-calculationが存在しないというエラーが表示されます。私がエラーを投げているfor-eachループに何か問題がありますか?XSLT繰り返し以上

私の現在のコードは次のとおりです。

<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

あなたが聞いた質問(テンプレートが存在しないと言っているのはなぜですか?)に答えました。あなたはビンバの答えを受け入れるべきです。新しい質問がある場合(このコードはなぜ私がそれをしたいのですか?)別の質問でそれらを呼び出すことができます。あるいは、XSLTの変数スコープを読んで、XSLTに突然変異がないという事実について考えてみましょう。それは一度に1回だけの言語です。 –

答えて

0

名前でテンプレートを呼び出す場合、名前を付ける必要があります。

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

したい場合は、私はそれのために良いの使用を発見したことがありませんが、あなたは、name属性とmatch属性の両方を持つことができます。

関連する問題