我正在尝试使用xslt版本2.0
这里有一些示例xml数据(我的数据遵循此模式)
<Messages>
<Message time="2015-08-06 22:00:11" type="Success">A</Message>
<Message time="2015-08-07 22:00:07" type="Success">B</Message>
<Message time="2015-08-07 22:00:15" type="Success">C</Message>
</Messages>
我尝试使用此解决方案XPath query filtering by date,建议我使用translate将日期转换为数字,但我收到一条错误消息(在Visual Studio中)
缺少必需的空格
这是我的代码:
<xsl:for-each select="Messages/Message[translate(@time, "- :", "") > translate('2015-08-06 22:00:11', "- :", "")]">
答案 0 :(得分:1)
您收到错误,因为您尝试在双引号内使用双引号。尝试更改:
<xsl:for-each select="Messages/Message[translate(@time, "- :", "") > translate('2015-08-06 22:00:11', "- :", "")]">
为:
<xsl:for-each select="Messages/Message[translate(@time, '- :', '') > translate('2015-08-06 22:00:10', '- :', '')]">
P.S。如果您使用的是XSLT 2.0,为什么不将这些值作为日期时间进行比较?
答案 1 :(得分:0)
我遇到了类似的问题,试图使用以下内容:
<xsl:variable select="userCSharp:StringConcat("00")" name="var:v1"/>
它抛出了#34;缺少所需的空白&#34;错误。对我来说,以下解决方案有效:
<xsl:variable select="userCSharp:StringConcat("00")" name="var:v1"/>
它清除了错误并让我的代码编译。