我正在尝试使用字符串的长度来确定它是日期,还是日期和时间。日期将有10个字符,日期时间将为24.如果没有时间,则日历应将其解释为全天事件。
所以 - 这是我使用的if语句:
<xsl:variable name="alextest" select="string-length(gd:when/@startTime)" />
allDay: <xsl:if test="$alextest<12"> true </xsl:if>
但是if语句总是无法输出true,即使满足条件也是如此。
我已经以各种方式测试了逻辑,例如输出表达式的值
<xsl:value-of select="$alextest<12"/>',
解析为true,因此比较有效。我也试过这个并且它有效,这似乎表明结构是正确的:
allDay: <xsl:if test="0<12"> true </xsl:if>,
我做错了什么?
非常感谢
亚历
答案 0 :(得分:1)
<
低于。{} 13 < 12
无法评估为真。我认为您需要<=
形式的<=
或>
形式的>
。
编辑:以下按预期工作,因此在您显示的代码之外仍然存在某些问题,或者值可能需要调整。确保变量的select表达式真正解析为某些内容。
<?xml version="1.0" encoding="UTF-8"?>
<root>
<el1>123456789101112</el1>
<el2>123456</el2>
<el3>1234567891011121314</el3>
<el4></el4>
</root>
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions">
<xsl:output method="text"/>
<xsl:template match="/*">
<xsl:for-each select="*">
<xsl:variable name="test" select="string-length(.)" />
<xsl:if test="$test < 12"><xsl:value-of select="local-name(.)"/>: shorter than 12 </xsl:if>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>