使用來自exslt.org date.msxsl.xsl和msxsl的日期:差異函數。 如果我使用字符串文字,那麼該函數工作正常。 但是,如果我抓住從XML文件中的字符串,並把它們放到變量,然後使用這些變量的「差」功能,我得到以下錯誤:將xsl變量傳遞給javascript函數
msxsl.exe dummy.xml dateDifftest.xsl -o diffOut.html
Error occurred while executing stylesheet 'dateDifftest.xsl'.
Code: 0x80020009
Microsoft JScript runtime error
Wrong number of arguments or invalid property assignment
line = 954, col = 3 (line is offset from the start of the script block).
Error returned from property or method call.
我在這個XSL做3次試驗。所有3個使用相同的日期時間字符串。
第一個測試使用字符串文字調用函數。 第二個測試使用字符串作爲其內容來調用帶有變量的函數。 第三個測試 - 失敗測試 - 從xml文件中提取字符串。
那麼第三次測試的變量與第二次測試的變量有什麼不同呢?
如果我註釋掉第三測試的函數調用,這是輸出:
TEST-1
PT2M1S
TEST-2
2011-12-13T16:15:26
2011-12-13T16:17:27
PT2M1S
TEST-3
2011-12-13T16:15:26
2011-12-13T16:17:27
XSL文件:
<?xml version='1.0'?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:date="http://exslt.org/dates-and-times"
>
<xsl:include href="date.msxsl.xsl" />
<!-- msxsl.exe dummy.xml dateDifftest.xsl -o diffOut.html -->
<xsl:template match="/A/B/C">
<TEST1>
TEST-1
<br/>
<xsl:value-of select="date:difference('2011-12-13T16:15:26', '2011-12-13T16:17:27')"/> <!-- outputs "PT2M1S", the difference is 2 mins and 1 sec -->
</TEST1>
<br/>
<TEST2>
TEST-2
<br/>
<xsl:variable name="startTime" select="'2011-12-13T16:15:26'"/>
<xsl:value-of select="$startTime"></xsl:value-of>
<br/>
<xsl:variable name="endTime" select="'2011-12-13T16:17:27'"/>
<xsl:value-of select="$endTime"></xsl:value-of>
<br/>
<xsl:value-of select="date:difference($startTime, $endTime)"/> <!-- also outputs "PT2M1S" -->
</TEST2>
<br/>
<TEST3>
TEST-3
<br/>
<xsl:variable name="startTime" select="start"/>
<xsl:value-of select="$startTime"></xsl:value-of>
<br/>
<xsl:variable name="endTime" select="end"/>
<xsl:value-of select="$endTime"></xsl:value-of>
<br/>
<!-- <xsl:value-of select="date:difference($startTime, $endTime)"/>--> <!-- FAILS HERE -->
</TEST3>
</xsl:template>
輸入XML文件:
<A>
<B>
<C>
<start>2011-12-13T16:15:26</start>
<end>2011-12-13T16:17:27</end>
</C>
</B>
</A>
謝謝
這是源爲我工作...使用xlstproc而不是msxsl。嘗試xsltproc -o diffOut.html dateDifftest.xsl dummy.xml –
我被告知使用此exslt.org腳本的其他帖子,該腳本旨在與msxsl一起使用。所以我不確定是否應該'只是使用另一個處理器,如果這個不工作' - 是正確的方法。特別是如果我打算使用該腳本中的更多功能。但我對xsl很陌生,因此非常感謝任何見解。 –
同意,我不知道這是正確的方法。在這種情況下,爲什麼不把它標記爲msxsl,以便從知道msxsl的人那裏獲得關注... –