2013-12-03 8 views
3

Я хочу сравнить текущую дату с датой начала и датой окончания.XSLT 1.0 Сравните даты

XML является:

<forms> 
    <form id="11"> 
    <start>somedate</start> 
    <end>someotherdate</end> 
    </form> 
</forms> 

В настоящее время я пытаюсь:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns:ex="http://exslt.org/dates-and-times" extension-element-prefixes="ex" > 

<xsl:choose> 
    <xsl:when test="end != ''     
     and start != '' 
     and ex:date(start) &lt;= current-date() 
     and current-date() &lt;= ex:date(end)"> 
     <!-- Do Stuff --> 
    </xsl:when> 
</xsl:choose> 

Я получаю следующее сообщение об ошибке:

xmlXPathCompOpEval: function current-date not found 
XPath error : Unregistered function 
XPath error : Stack usage errror 
<ul class="ccb_forms_ul"></ul> 
+0

Какой у вас XSLT-движок? Поддерживает ли EXSLT? –

+0

Я тестирую с помощью xsltproc, но это для использования в WordPress, и я понятия не имею, что использует WP. Все, что я знаю, это то, что версия 2.0 выше не работает в WP. –

ответ

6

Предполагая, что ваши даты в формате гггг-мм-дд (как я понимаю, они из вашего другого вопроса), это должно работать с most XSLT 1.0:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns:date="http://exslt.org/dates-and-times" 
extension-element-prefixes="date"> 

... 

<xsl:for-each select="forms/form"> 

<xsl:variable name="today" select="translate(substring-before(date:date-time(), 'T'), '-', '')"/> 
<xsl:variable name="start" select="translate(start, '-', '')"/> 
<xsl:variable name="end" select="translate(end, '-', '')"/> 

<xsl:if test="$start &lt;= $today and $today &lt;= $end"> 
    <!-- in progress --> 
</xsl:if> 
+0

Почему это работает? Это удаляет - из дат и сравнивает их лексикографически. Я могу пропустить sth ... –

+0

@MikeArgyriou Фактически, он удаляет «-» из дат и сравнивает результаты ** численно ** - см .: http://www.w3.org/TR/xpath/#booleans –

Смежные вопросы