簡體   English   中英

將xsl變量傳遞給javascript函數

[英]passing xsl variable to javascript function

使用帶有msxsl的exslt.org date.msxsl.xsl中的date:差異功能。 如果我使用字符串文字,那么該函數可以正常工作。 但是,如果我從xml文件中獲取字符串並將其放入變量中,然后將這些變量用於“差異”功能,則會收到以下錯誤:

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>

謝謝

查看您鏈接到的源,我看到了

<doc:args>
    <doc:arg name="date" type="string" default="''" optional="yes"></doc:arg>
    <doc:arg name="date" type="string" default="''" optional="yes"></doc:arg>
</doc:args>

所以我建議嘗試確保在XSLT / XPath端將字符串值作為參數傳遞

<xsl:variable name="startTime" select="string(start)"/>
    <xsl:value-of select="$startTime"></xsl:value-of>
<br/>
    <xsl:variable name="endTime" select="string(end)"/>
    <xsl:value-of select="$endTime"></xsl:value-of> 
<br/>
<xsl:value-of select="date:difference($startTime, $endTime)"/>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM