gpt4 book ai didi

Java 脚本 XSLT 错误 : For extension function, 找不到方法 java.lang.String。 ([ExpressionContext,] #STRING)

转载 作者:行者123 更新时间:2023-11-30 18:48:32 25 4
gpt4 key购买 nike

您好,我正在使用 Xalan 来解析我的 xsl 文件。 xsl 在 vb.net 解析器中正常工作。但是 Xalan 给出了那个 xsl 的错误。

For extension function, could not find method java.lang.String.FctDateDuration([ExpressionContext,] STRING).

这是我定义 xsl 的方式。

xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:ttVB="ttVB" exclude-result

这里是xsl中的java脚本调用部分:-

<xsl:variable name="start">
xsl:value-of select="substring(DepartureDateTime,1,10)" />
</xsl:variable>
xsl:variable name="end">
xsl:value-of select="substring(following-sibling::OriginDestinationInformation/DepartureDateTime,1,10)" />
</xsl:variable>
xsl:variable name="end1">
xsl:value-of select="substring(preceding-sibling::OriginDestinationInformation/DepartureDateTime,1,10)" />
</xsl:variable>
xsl:variable name="dd" select="ttVB:FctDateDuration(string('2011-02-20'),string('2011-02-25'))"/>
xsl:variable name="dd1" select="ttVB:FctDateDuration(string('2011-02-20'),string('2011-02-25'))"/>
<xsl:choose>
xsl:when test="$dd = 0 or $dd = 1">
<timeQualifier>TA</timeQualifier>
</xsl:when>
xsl:otherwise>
timeQualifier>TD</timeQualifier>
</xsl:otherwise>
</xsl:choose>

这是我的 Javascript

<msxsl:script language="JavaScript" implements-prefix="ttVB">
<![CDATA[

function FctDateDuration(p_startDate,p_endDate){



if (IsDate(p_startDate) && IsDate(p_endDate)){

FctDateDuration = String(calcDays(p_startDate, p_endDate))

}else{

FctDateDuration = p_startDate + p_endDate

}



return FctDateDuration;

}



function IsDate(ddate){



//alert("Inside IsDate >> "+ddate);

var dteDate;



var year = ddate.substring(0, 4);

var month = ddate.substring(5, 7);

var day = ddate.substring(8,10);



month = month-1;



//alert(year);

//alert(month);

//alert(day);



dteDate=new Date(year,month,day);





return ((day==dteDate.getDate()) && (month==dteDate.getMonth()) && (year==dteDate.getFullYear()));





}



function calcDays(date1,date2){

date1 = date1.split("-");

date2 = date2.split("-");

var sDate = new Date(date1[0]+"/"+date1[1]+"/"+date1[2]);

var eDate = new Date(date2[0]+"/"+date2[1]+"/"+date2[2]);

var daysApart = Math.abs(Math.round((sDate-eDate)/86400000));

//document.getElementById('diffDays').lastChild.data = daysApart;



//alert(daysApart);

return daysApart;



}





]]>

</msxsl:script>

最佳答案

扩展函数很难移植,甚至它们的定义方式也不是可移植的。在 .NET 中,您可以使用 msxsl:script 元素来定义扩展函数,但不要指望 Xalan 支持它。根据http://xml.apache.org/xalan-j/extensions.html#ex-basic如果您将 bsf.jar 和 js.jar 放在类路径中,则 Xalan Java 支持 xalan:script 元素。

关于Java 脚本 XSLT 错误 : For extension function, 找不到方法 java.lang.String。 ([ExpressionContext,] #STRING),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4668948/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com