XSLT Сравнение дат - PullRequest
       1

XSLT Сравнение дат

1 голос
/ 05 октября 2011
<xsl:variable name="date1" select="2011-10-05"/>
<xsl:variable name="date2" select="2011-10-05"/>
<xsl:variable name="date3" select="2011-10-06"/>

<xsl:if test="$date2 = $date1 or $date2 &lt; $date1">
  ..do something
</xsl:if>

<xsl:if test="$date3 = $date1 or $date3 &gt; $date1">
 .. do something
</xsl:if>

Оба должны оценивать истину, но второе, если нет. За свою жизнь я не могу понять, почему!

В реальном преобразовании сами даты извлекаются из XML-документа, но при отладке через VS2010 я вижу значения, указанные выше.

Должно быть что-то довольно фундаментальное, я делаю неправильно - любая помощь будет великолепна!

1 Ответ

2 голосов
/ 05 октября 2011

Я пробовал это в Oxygen / XML ... select="2011-10-05 интерпретируется как арифметическое выражение, давая значение 1996 (2011 минус 10 минус 5) и "2011-10-06" интерпретируется как 1995.

То, что вы хотите, это

<xsl:variable name="date1" select="'2011-10-05'"/>
<xsl:variable name="date2" select="'2011-10-05'"/>
<xsl:variable name="date3" select="'2011-10-06'"/>

Обратите внимание на дополнительные одинарные кавычки.

Из спецификации XSLT 1.0 :

Если элемент привязки переменной имеет атрибут select, тогда значение атрибута должен быть выражением и значением переменной является объектом, полученным в результате вычисления выражения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...