Xslt Sharepoint Designer XLST XSL IF/Choose语句
有人能告诉我我在SharePoint Designer中使用的代码有什么问题吗:Xslt Sharepoint Designer XLST XSL IF/Choose语句,xslt,sharepoint,Xslt,Sharepoint,有人能告诉我我在SharePoint Designer中使用的代码有什么问题吗: <xsl:choose> <xsl:when test="number((ddwrt:DateTimeTick(ddwrt:GenDisplayName(string(ddwrt:Today())))- (ddwrt:DateTimeTick(ddwrt:GenDisplayName(string(@Date_x0020_only))))) div 864000000000) &g
<xsl:choose>
<xsl:when test="number((ddwrt:DateTimeTick(ddwrt:GenDisplayName(string(ddwrt:Today())))- (ddwrt:DateTimeTick(ddwrt:GenDisplayName(string(@Date_x0020_only))))) div 864000000000) > 7 div 864000000000 and <= 14 div 864000000000">
<h2> <strong><span style="font-size: 8pt"> WEEK 1 </span></strong>
<xsl:text xmlns:ddwrt="http://schemas.microsoft.com/WebParts/v2/DataView/runtime" ddwrt:whitespace-preserve="yes" xml:space="preserve"> </xsl:text>
</h2>
</xsl:when>
</xsl:choose>
更新:
非常感谢@matthias_h和@Jason Aller
下面是我最后使用的代码:
<xsl:variable name="X"
select="number((ddwrt:DateTimeTick(ddwrt:GenDisplayName(
string(ddwrt:Today())))-(ddwrt:DateTimeTick(ddwrt:GenDisplayName(
string(@Date_x0020_only))))) div 864000000000)">
</xsl:variable>
<xsl:if test="$X > 0 div 864000000000 and $X <= 7 div 864000000000">
<xsl:text> WEEK 1</xsl:text>
</xsl:if>
<xsl:if test="$X > 7 div 864000000000 and $X <= 14 div 864000000000">
<xsl:text> WEEK 2</xsl:text>
</xsl:if>
<xsl:if test="$X > 14 div 864000000000 and $X <= 21 div 864000000000">
<xsl:text> WEEK 3</xsl:text>
</xsl:if>
<xsl:if test="$X > 21 div 864000000000">
<xsl:text> Escalation</xsl:text>
</xsl:if>
第一周
第2周
第3周
升级
因此,现在在Sharepoint designer预览部分中,它可以正常工作,如下所示:
2014年11月7日上午11:56上报
2014年11月7日上午11:56上报
2014年11月7日上午11:56上报
2014年11月26日上午8:47升级
2014年12月18日第2周下午3:10
但在浏览器中显示如下:
2014年11月7日上午11:56上报
2014年11月7日上午11:56上报
2014年11月7日上午11:56上报
2014年11月26日上午8:47升级
2014年12月18日下午3:10升级
2014年12月29日下午1:48升级
出于某种原因,它把它们都称为升级。有什么建议吗
我真的很感谢你的帮助
更新2
谢谢@matthias_h
回答您的问题:
1.)是,在SPD预览中正确,但在浏览器中不正确
2.)这是SPD中的值
2014年11月7日上午11:56升级0.00000000006134259259259259
2014年11月7日上午11:56升级0.00000000006134259259259259
2014年11月7日上午11:56升级0.00000000006134259259259259
2014年11月26日上午8:47升级0.00000000003935185185
2014年12月18日第2周下午3:10 0.0000000000138888888888
这些是浏览器中的值
2014年11月7日上午11:56升级53
2014年11月7日上午11:56升级53
2014年11月7日上午11:56升级53
2014年11月26日上午8:47升级34
2014年12月18日下午3:10升级12
你认为这和我除以864000000000有关吗?
我这样做的原因是因为它没有在浏览器中正确地显示日期差异。
所以我使用了这个解决方案:
再次感谢您的帮助我无法测试完整表达式,因为缺少名称空间和函数,但我认为存在以下语法错误,如示例所示:
<xsl:when test="value > 14 and < 7">
应该是
<xsl:when test="value > 14 and value < 7">
我建议-为了可读性,将number()中的表达式作为变量,例如
<xsl:variable name="testString"
select="number((ddwrt:DateTimeTick(ddwrt:GenDisplayName(
string(ddwrt:Today())))-(ddwrt:DateTimeTick(ddwrt:GenDisplayName(
string(@Date_x0020_only))))) div 864000000000)">
然后检查一下
<xsl:when test="$testString > 7 div 864000000000
and $testString <= 14 div 864000000000">
会有用的。另外,如果您没有
xsl:if
或其他xsl:when
案例,您可以调整为xsl:if
。您是否也可以显示更多样式表和XML输入?这将使我们能够重现您的问题。谢谢您是否考虑过设置一个
来保存封装在number()
中的部分,并以var>7和var两个问题的形式进行比较,以了解更新代码中的问题?1)预览输出是否正常,只有浏览器输出错误;2)$X
的值是多少?你能用'Sorry@matthias_h'打印出来吗?请看原始的帖子更新2。我是这个论坛的新手,不知道如何在评论区正确设置文本格式。别介意,不需要任何借口。您可以单击“添加评论”按钮下方的“帮助”
,获取有关格式的信息,顺便说一句,最好将其他信息添加到原始帖子中,而不是作为评论,这样人们就可以看到完整的问题,包括更新,而不必转到评论。此外,应该避免在评论中进行长时间的讨论,并改用SO chat,但要使用此功能,您需要20的声誉。我只是检查一下更新,但也许最好把它作为一个新问题添加,因为第一个问题已经解决了,这是一个后续问题。哇。谢谢@matthias_h这比我所拥有的容易多了。我是一个初学者,当谈到编码,所以请原谅我的代码格式。我最后做的是:试图发布代码,但太长了。我会编辑我原来的帖子,这样你就可以看到了。不过,我现在的新问题是,它在sharepoint designer中工作得非常好,也就是说,当我在预览部分看到它时,它对浏览器中的每一行都说了同样的话。他们都说升级。我做错什么了吗?
<xsl:when test="$testString > 7 div 864000000000
and $testString <= 14 div 864000000000">