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>&lt;xsl:attribute name="date"&gt;
 &lt;xsl:value-of select="current-dateTime()"&gt;
 &lt;/xsl:value-of&gt;&lt;/xsl:attribute&gt;</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.