Datetime XSLT根据日期确定年份

Datetime XSLT根据日期确定年份,datetime,xslt,Datetime,Xslt,在下面的XSLT中,如果创建的日期>12/31/2012,我如何才能显示表单myform?本质上,我想阻止2013年之前的任何事情显示表单按钮 <xsl:template match="Table"> <tr> <td> <font face="Verdana" color="#ffffff" size="2" style="vertical-align: top; white-space: nowrap"

在下面的XSLT中,如果创建的日期>12/31/2012,我如何才能显示表单myform?本质上,我想阻止2013年之前的任何事情显示表单按钮

<xsl:template match="Table">
    <tr>
        <td>
            <font face="Verdana" color="#ffffff" size="2" style="vertical-align: top; white-space: nowrap">
                <xsl:value-of select="PRG_DESCRIPTION"/>
            </font>
        </td>
        <td>
            <font face="Verdana" color="#ffffff" size="2" style="vertical-align: top; white-space: nowrap">
                <xsl:value-of select="DAYS_LEFT"/>
            </font>
        </td>
        <td>&#160;&#160;</td>
        <xsl:if test="ACTIVE = 0">
            <p>
            <td style="top: 2px">
                <form name="myform" onsubmit="popupform(this, 'join');" action="../LOS/SetCourseStart.aspx" method="post">
                    <input type="hidden" name="CourseID">
                        <xsl:attribute name="value">
                            <xsl:value-of select="COURSE_ID"/>
                        </xsl:attribute>
                    </input>
                    <input type="hidden" name="UserID">
                        <xsl:attribute name="value">
                            <xsl:value-of select="RID"/>
                        </xsl:attribute>
                    </input>
                    <input type="hidden" name="ECode">
                        <xsl:attribute name="value">
                            <xsl:value-of select="EC"/>
                        </xsl:attribute>
                    </input>
                    <input type="hidden" name="DateCreated">
                        <xsl:attribute name="value">
                            <xsl:value-of select="DATE_CREATED"/>
                        </xsl:attribute>
                    </input>
                    <input name="Submit" type="submit" value="Go"/>
                    <br>           
                    </br>

                    <SCRIPT TYPE="text/javascript">
                    </SCRIPT>
                </form>
            </td>
            </p>
        </xsl:if>
    </tr>
</xsl:template>
以下是当前数据转换后的结果,在转换前我无法获取数据:

<form name="myform" onsubmit="popupform(this, 'join');" action="../LOS/SetCourseStart.aspx" method="post">
    <input type="hidden" name="CourseID" value="dev^1318">
    <input type="hidden" name="UserID" value="948604">
    <input type="hidden" name="ECode" value="20080531">
    <input type="hidden" name="DateCreated" value="2008-05-31T00:00:00-06:00">
    <input name="Submit" type="submit" value="Go">
    <br>
    <script type="text/javascript"></script>
</form>

在测试中,添加类似XSLT2.0的内容

<xsl:if test="ACTIVE = 0 and year-from-date(/path/to/the/date) >= 2013">
我想/path/to/the/date应该是您案例中创建的日期

请注意,函数year from date不可用,它是fn名称空间的一部分,需要使用xmlns:fn指定,如下所示:

<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"
    xmlns:snap="snap:snap">
尝试更改:

<xsl:template match="table">
致:


注:这是一个猜测。在没有看到源XML的情况下编写XSLT是非常困难的。修复XSLT而不查看所有内容同样困难。

您使用的是什么版本和处理器?假设您正在生成HTML,则表单所用的标记周围有一个虚假的标记。@Alexiswike更不用说标记的使用了。。。这是由其他人构建的非常古老的HTML,我不会改变它。我不确定它使用的是什么处理器,我该怎么说?这是一个VB.Net应用程序,与其更改获取数据的VB代码,不如使用已构建的XSLT过滤掉数据。在转换数据之前,我无法获取数据。是的,你可以:对它应用一个身份转换模板,它就在这里。我得到这样一个信息:“year from date”是一个未知的XSLT函数。year-from-dateTimeDATE\u CREATED>=2013导致“year from dateTime”是一个未知的XSLT函数!对这是一个XSLT扩展。您需要添加xmlns:fn条目,以便解析器找到它。我更新了我的答案。因为这似乎是1.0,我做了一个有效的:numbersubstring-beforeDATE_CREATED,“-”number'2012“是的,你没有说明你使用的版本。我们只是不希望表单显示,而不是整行。请参阅我对@Alexis Wilke答案的评论。@MB34好吧,那么只需在表单之前添加测试即可。看来你已经这么做了。
<xsl:template match="table[substring(DATE_CREATED, 1 , 4) > 2012]">