を再訪しました。おそらくそれは名前空間と関係があります。 そして、私は関数アプローチの結果を理解していません。計算の時間差は、私はこの答えに示す指針に従うことをしようとしている
入力のxml:
<BatchData >
<Line>
<Batch>
<start>2011-12-13T16:15:26</start>
<end>2011-12-13T16:17:27</end>
</Batch>
</Line>
XSLファイル:
<?xml version='1.0'?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
xmlns:date="http://exslt.org/dates-and-times"
extension-element-prefixes="date"
>
<xsl:include href="date.msxsl.xsl" />
<!-- msxsl.exe myDateTestInput.xml myDateEXSLT.xsl -o dateTestOut.html-->
<!-- java -cp C:\XSL\SaxonHE9-7-0-14J\saxon9he.jar net.sf.saxon.Transform -t -s:myDateTestInput.xml -xsl:myDateEXSLT.xsl -o:dateTestOut.html -->
<xsl:output method="html" />
<xsl:template match="/BatchData/Line/Batch">
<html>
<head>
</head>
<body>
<table >
<tr>
<td>
<xsl:variable name="time-diff-dur">
<xsl:call-template name="date:difference">
<xsl:with-param name="start" select="start" />
<xsl:with-param name="end" select="end" />
</xsl:call-template>
</xsl:variable>
<!-- The above returns a duration formatted string, so convert that to seconds: -->
<xsl:variable name="time-diff-sec">
<xsl:call-template name="date:seconds">
<xsl:with-param name="seconds" select="$time-diff-dur" />
</xsl:call-template>
</xsl:variable>
<!--
<xsl:variable name="time-diff-sec" select="date:seconds(date:difference(start, end))" />
<xsl:value-of select="$time-diff-sec"></xsl:value-of>
-->
</td>
</tr>
</table>
</body>
</html>
</xsl:template>
私はmsxslとSaxon9heの両方を使用していました。彼らは両方ともテンプレートアプローチでは失敗しましたが、Saxonは少なくともいくつかのエラー情報を提供しました。 XSLで
静的エラー:これは、テンプレートを使用してからのエラーです XTSE0650:myDateEXSLT.xslの行25列51上でテンプレートを呼び出し、XSLの違い 静的エラー:コールませテンプレートは、日付と命名ない存在しますxSl:変数31行目myDateEXSLT.xslの変数: SXWN9001:次の兄弟指示がない変数には、noという名前の変数がありません。効果 スタイルシートの編集中にエラーが報告されました
テンプレートをコメントアウトして関数アプローチのコメントを外すとエラーは表示されませんが、time-diff-secの結果を表データ値として表示する方法はわかりません。代わりに、出力は入力ファイルのちょうど2 datetimesです。
「include」の代わりに「import」を使用しましたが、違いはありませんでした。違いはありますか?
だから、質問を要約する:
- 私は、テンプレート方式と間違って何をしましたか?
- 関数のアプローチから 値を表示するにはどうすればよいですか?
- 'import'と 'include'の間に違いがありますか?
おそらく前者はサイトからプルダウンするためのもので、後者はローカルリソース用です。
ありがとうございました。
これはdate.msxsl.xslというファイルです。そのexslt.orgサイトに問題があるようだから、ここに投稿します。 (拡張子の名前を変更):あなたの特定の質問への答えで date.msxsl.xsl