Datetime XSLT根据日期确定年份
在下面的XSLT中,如果创建的日期>12/31/2012,我如何才能显示表单myform?本质上,我想阻止2013年之前的任何事情显示表单按钮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"
<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>  </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]">