gpt4 book ai didi

javascript - 使用 Javascript 作为 XSLT 转换的一部分时如何传递参数

转载 作者:行者123 更新时间:2023-11-30 17:26:19 24 4
gpt4 key购买 nike

好的,所以我在使用 javascript 脚本对我的 XSLT 转换执行计算时遇到了麻烦。

基本上,要转换的文件中有一个 xml 元素,具有属性 startDateTime 和 endDateTime。我想要做的就是将两者相减,然后返回该值以供用户查看。

    <event startDateTime = "" endDateTime = "">    
<eventOutcome>Fail</eventOutcome>
<event>

显然,所有内容都会正确填写。然后,有一个 xslt 转换,需要进行数学计算以找到耗时。

    <?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"> //schemas included here

<msxsl:script language="JScript" implements-prefix="user">
function elapsedTime(start, end) {
return (xmlToDateTime(end).getTime() - xmlToDateTime(start).getTime()) / 1000;
}

function xmlToDateTime(xmlString) {
//a script that works fine
}
</msxsl:script>

<xsl:output method="xml" indent="yes"/>

<xsl:template match="topLevelElement">
<wordDocument>
<body>
<sect>
<p>
<r>
<t><xsl:apply-templates select="event"/> Seconds</w:t>
</r>
</p>
<sect>
<body>
<wordDocument>
</xsl:template>

<xsl:template match="event">
<xsl:value-of select="user:elapsedTime(@startDateTime, @endDateTime)"/>
</xsl:template>

</xsl:stylesheet>

我想要做的是将事件的属性作为字符串传递给 javascript 函数。相反,它所做的是传递 Visual Studio 标识为 {MS.Internal.Xml.XPathArrayIterator} 的对象。如果我像

这样直接使用字符串,该函数就可以正常工作
<xsl:value-of select="user:elapsedTime(DATETIME', 'DATETIME')

所以问题不在于 javascript 本身,而在于我向它发送参数的能力。

官方 MS 文档的帮助不大。

http://msdn.microsoft.com/en-us/library/533texsx(v=vs.110).aspx

一方面,他们使用 C# 而不是 JS,我不确定这有什么意义。但是他们只是传递了一个元素的名称,没有解释它是如何得到这个值的。

我也在这里阅读了常见问题解答

http://www.dpawson.co.uk/xsl/sect4/N9745.html#d13958e70

而且他们的代码不起作用!它给出了传递 {MS.Internal.Xml.XPathArrayIterator} 而不是值的相同问题。

我在这里不知所措,所以我愿意接受任何建议。提前致谢。

最佳答案

要将字符串传递给 javascript 函数,您可以使用字符串函数:string(@startDateTime), string(@endDateTime)

关于javascript - 使用 Javascript 作为 XSLT 转换的一部分时如何传递参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24175206/

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