Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xslt 比较日期时发生XPATH错误_Xslt_Xpath - Fatal编程技术网

Xslt 比较日期时发生XPATH错误

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"

我正在尝试使用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"         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, '-', '') &lt; 20160603


注意:样式表中还有其他错误。如果不知道您要在这里完成什么,很难列出所有错误。

如果您使用的是XSLT 1.0处理器,您需要这样进行比较:

translate(lprog:ProdDate, '-', '') &lt; 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年以上——这似乎是正确的。