比较两个来自嵌套for循环的日期值XSLT
问题描述:
我正在比较XSLT中的两个日期值。值A来自最外面的循环,而值B来自内部的for循环。但是在内部循环中对这些值进行比较总是会让我错误,尽管在打印这些值时我可以看到这些值是相同的。比较两个来自嵌套for循环的日期值XSLT
源XML:
<root>
<fs:Fruits xmlns:fs="http://www.w3.org/2001/XMLSchema/fs">
<fs:Action>CHANGE</fs:Operation>
<fs:Fruit_Available_Start_Date>20140607</fs:Fruit_Available_Start_Date>
<fs:Fruit_Available_End_Date>20150201</Fruit_Available_End_Date>
</fs:Fruits>
<fs:Fruits>
<fs:Action>NEW</fs:Operation>
<fs:Fruit_Available_Start_Date>20150502</fs:Fruit_Available_Start_Date>
</fs:Fruits>
<fs:Fruits>
<fs:Action>NEW</fs:Operation>
<fs:Fruit_Available_Start_Date>20150202</fs:Fruit_Available_Start_Date>
</fs:Fruits>
<fs:Fruits>
<fs:Action>CHANGE</fs:Operation>
<fs:Fruit_Available_Start_Date>20150402</fs:Fruit_Available_Start_Date>
<fs:Fruit_Available_End_Date>20150201</Fruit_Available_End_Date>
</fs:Fruits>
</root>
XSL:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fs="http://www.w3.org/2001/XMLSchema/fs"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
exclude-result-prefixes="xs"
version="2.0">
<xsl:output method="text"></xsl:output>
<xsl:template match="/">
<xsl:for-each select="//fs:Fruits[fs:Action = 'CHANGE']">
<xsl:sort select="fs:Fruit_Available_End_Date" order="descending"></xsl:sort>
<xsl:variable name="FruitAvailableEndDatePluseOneDay" select="xs:date(concat(substring(fs:Fruit_Available_End_Date,1,4),'-',substring(fs:Fruit_Available_End_Date,5,2),'-',substring(fs:Fruit_Available_End_Date,7,2))) + xs:dayTimeDuration('P1D')"></xsl:variable>
<xsl:for-each select="//fs:Fruits[fs:Action = 'NEW']">
<xsl:variable name="Fruit_Available_Start_Date" select="xs:date(concat(substring(fs:Fruit_Available_Start_Date,1,4),'-',substring(fs:Fruit_Available_Start_Date,5,2),'-',substring(fs:Fruit_Available_Start_Date,7,2)))"></xsl:variable>
<xsl:if test="$Fruit_Available_Start_Date = $FruitAvailableEndDatePluseOneDay">
<xsl:value-of select="hello"></xsl:value-of>
</xsl:if>
</xsl:for-each>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
输出是当前为空
答
代替:
<xsl:value-of select="hello"></xsl:value-of>
其是指命名的一个不存在的元素hello
,尝试:
<xsl:value-of select="'hello'"/>
或 - 最好是:
<xsl:text>hello</xsl:text>
请告诉我们XML输入,XSLT的相关代码片段,结果你得到你想要的。 –
除了描述循环外,还展示了展示此行为的代码的最小示例。连同示例XML输入和输出文档。帮助:http://stackoverflow.com/help/mcve。 –
我们还需要查看示例输入数据。 –