XSLT - как правильно вставить текущую дату

Я пытаюсь исправить проблему - я попытался вставить текущее время в XSLT, но я получил ошибку из-за неправильного синтаксиса. В моем XML файле нет даты, поэтому мне нужно вставить текущее время в файл XSLT (date = "" с атрибутом) - посмотрите ниже:

XSLT:

<testlist> <header testcode="Test_3334" testid="" date=""> <xsl:attribute name="Header/date"> <xsl:value-of select="current-dateTime()"> </xsl:value-of></xsl:attribute> <validation testname="{Header/Validation/TestName}" testsurname="{Header/Validation/Surname}" checksum="{Header/Validation/Checksum}"> </validation></header> <tests> <xsl:apply-templates select="Tests/Test"> </xsl:apply-templates></tests>
</testlist>

Есть ли способ форматировать правильное время даты в XSLT. Может быть, мой код ошибочен. Спасибо за вашу помощь :)

1 ответ

Проблема может быть не с функцией current-dateTime(), а с именем атрибута:

Вы не должны указывать здесь выражение xpath, но буквально просто имя атрибута, и оно будет добавлено к самому последнему элементу, который у вас есть.

На самом деле вам также не нужно сначала устанавливать атрибут "дата", указанный в заголовке (хотя это ничего не сломает, поскольку атрибут xsl:) перезапишет его). Это должно работать:

<header testcode="Test_3334" testid=""><code> <xsl:attribute name="date"> <xsl:value-of select="current-dateTime()"> </xsl:value-of></xsl:attribute>
</code> <p> Фактически, вы можете упростить это с помощью шаблонов значений атрибутов. Попробуй это</p> <pre class="prettyprint linenums"><header testcode="Test_3334" testid="" date="{current-dateTime()}"> <p> Обратите внимание, что вам нужно будет использовать процессор XSLT 2.0 для работы функции dateTime.</p> </header>

licensed under cc by-sa 3.0 with attribution.