Xslt 比较日期时发生XPATH错误
我正在尝试使用xpath进行比较日期的转换 以下是我的XML示例:Xslt 比较日期时发生XPATH错误,xslt,xpath,Xslt,Xpath,我正在尝试使用xpath进行比较日期的转换 以下是我的XML示例: <?xml version="1.0" encoding="UTF-8"?><shop xmlns="http://www.dei.isep.ipp.pt/lprog" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:lprog="http://www.dei.isep.ipp.pt/lprog"
<?xml version="1.0" encoding="UTF-8"?><shop xmlns="http://www.dei.isep.ipp.pt/lprog" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:lprog="http://www.dei.isep.ipp.pt/lprog" xsi:schemaLocation="http://www.dei.isep.ipp.pt/lprog TraXSD.xsd">
<Category nome="Fish">
<Article id="1" nome="fish1">
<ProdDate>2018-10-02</ProdDate>
</Article>
</Category >
</shop>
2018-10-02
下面是一个带有
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
xmlns:lprog="http://www.dei.isep.ipp.pt/lprog">
<xsl:output method="html"/>
<xsl:template match="/">
<html>
<head>
<title>List of Products out of Time</title>
</head>
<body>
<table border="1">
<tr bgcolor="#9acd32">
<th style="text-align:left">Category</th>
</tr>
<tr>
<td>
<xsl:apply-templates select="//lprog:Category/lprog:Article"/>
</td>
</tr>
</table>
</body>
</html>
</xsl:template>
<xsl:template match="lprog:Category/lprog:Articleo">
<xsl:value-of select="@nome"/>
<xsl:text>:</xsl:text>
<xsl:value-of select="lprog:ProdDate[xs:date(lprog:ProdDate) le xs:date('2016-06-03')]"/> ERROR HERE
<xsl:text disable-output-escaping="yes">
<p></p>
</xsl:text>
</xsl:template>
</xsl:stylesheet>
过期产品清单
类别
:
这里出错
**这行有错误** lprog:ProdDate[xs:date(lprog:ProdDate)le xs:date('2016-06-03')”/>
谢谢!首先,如果要使用
xs:date
和le
操作符,需要使用XSLT 2.0处理器。此外,样式表当然需要声明xmlns:xs=”http://www.w3.org/2001/XMLSchema“
名称空间
我还认为您需要将lprog:ProdDate[xs:date(lprog:ProdDate)le xs:date('2016-06-03')]
修改为lprog:ProdDate[xs:date(.)le xs:date('2016-06-03')]
和match=“lprog:Category/lprog:Article”
修改为match=“lprog:Category/lprog:Article>
对于XSLT 1.0处理器,您所能比较的就是,例如,
首先,如果您想使用xs:date
和le
操作符,您需要使用XSLT 2.0处理器。此外,样式表当然需要声明xmlns:xs=”http://www.w3.org/2001/XMLSchema“
名称空间
我还认为您需要将lprog:ProdDate[xs:date(lprog:ProdDate)le xs:date('2016-06-03')]
修改为lprog:ProdDate[xs:date(.)le xs:date('2016-06-03')]
和match=“lprog:Category/lprog:Article”
修改为match=“lprog:Category/lprog:Article>
对于XSLT 1.0处理器,您只能进行比较,例如,如果您使用的是XSLT 1.0处理器,则需要进行如下比较:
translate(lprog:ProdDate, '-', '') < 20160603
注意:样式表中还有其他错误。如果不知道您要在这里完成什么,很难列出所有错误。如果您使用的是XSLT 1.0处理器,您需要这样进行比较:
translate(lprog:ProdDate, '-', '') < 20160603
注意:你的样式表中还有其他错误。如果不知道你到底想在这里完成什么,很难列出所有错误。我正在处理一个非常类似的问题-我认为答案是转换为Julian days(我的样式表仍然是一个原始草稿)。
这是一个绝对日期,应该与XSL 1.0配合使用,不需要扩展
我在这里找到了公式:
我正在处理一个非常类似的问题——我认为答案是转换为Julian days(我的样式表仍然是一个原始草稿)。
这是一个绝对日期,应该与XSL 1.0配合使用,不需要扩展
我在这里找到了公式:
我使用的是1.0版本。因此,也许我需要使用XSLT 2.0或其他方式……粘贴“lprog:Articleo”是一种错误的复制粘贴。但即使是日期(.)它不断出现错误如果您想使用XSLT/XPath 2.0功能,如xs:date
或le
操作符,您需要使用XSLT 2.0处理器,如Saxon 9或XmlPrime。XSLT 1.0处理器不支持这些功能。我使用的是1.0版本。因此,也许我需要使用XSLT 2.0或其他方式……这是一个错误复制粘贴以放置“lprog:Articleo”。但即使是日期(.)如果要使用XSLT/XPath 2.0功能,如xs:date
或le
运算符,则需要使用XSLT 2.0处理器,如Saxon 9或XmlPrime。XSLT 1.0处理器不支持这些功能。XSLT处理器还应为包含te以外内容的xsl:text元素引发错误XSLT处理器还应该为包含文本以外内容的xsl:text元素引发错误。不,您不需要计算两个日期之间的差值来比较它们(找出哪个日期更大).---顺便说一句,你也不需要计算天数的差异来判断一个日期是否比另一个日期晚5年以上——这似乎是。不,你不需要计算两个日期之间的差异来比较它们(找出哪一个更大).---顺便说一句,你也不需要计算天数的差异来判断一个日期是否比另一个日期晚5年以上——这似乎是正确的。