- XSLT функции: (1) Создание
- XSLT функции: (2) Использование фильтра
- XSLT функции: (3) Редактирование шаблона
(Можно создавать и свои собственные расширения. Но об этом - в другой раз.)
Встроенные расширения собраны пространстве имен Composite.Xslt.Extensions. Там их три на данный момент:
- DateFormatting
- Globalization
- MarkupParser
На вкладке Вызовы функций, добавим вызов функции Composite.Xslt.Extensions.DateFormatting. На вкладке Просмотр на панели Ввод, рассмотрим, что это расширение предлагает.
Во-первых, здесь указано пространство имен #dateExtensions для функций форматирования даты, которое мы зарегистрируем в шаблоне.
<!-- Extension methods can be called using the namespace '#dateExtensions'. -->
Во-вторых, здесь приводится список всех доступных функций:
<!-- String ns:Now() -->
<!-- String ns:LongDateFormat(String xmlFormattedDate) -->
<!-- String ns:LongDateFormat(String xmlFormattedDate) -->
и т.д.
На вкладке Шаблон в элементе <xsl:stylesheet/> зарегистрируем пространство имен для функций этого расширения:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:de="#dateExtensions"
xmlns="http://www.w3.org/1999/xhtml">
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:de="#dateExtensions"
xmlns="http://www.w3.org/1999/xhtml">
А теперь воспользуемся одной из функций форматирования, передавая ей в качестве параметра нашу переменную $ChangeData.
<xsl:value-of select="de:ShortDateFormat($ChangeDate)" />
Шаблон теперь должен выглядеть примерно так:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:in="http://www.composite.net/ns/transformation/input/1.0"
xmlns:lang="http://www.composite.net/ns/localization/1.0"
xmlns:f="http://www.composite.net/ns/function/1.0"
xmlns:de="#dateExtensions"
xmlns="http://www.w3.org/1999/xhtml"
exclude-result-prefixes="xsl in lang f">
<xsl:variable name="ChangeDate"
select="/in:inputs/in:result[@name='GetIPageXml']/IPage/@ChangeDate" />
<xsl:template match="/">
<html>
<head />
<body>
<div id="LastModifiedDate">
Последнее изменение: <xsl:value-of select="de:ShortDateFormat($ChangeDate)" />
</div>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Я воспользовался простым форматом даты, но вы может использовать любую другую функцию, чтобы представить дату в том формате, в котором вам нужно.
На вкладке Просмотр, наша дата будет представлена примерно так:
Последнее изменение: 2/9/2011
Именно это и будет появляться на страницах сайта. Осталось только добавить нашу функцию ShowChangeDate в шаблоны страниц.
Здравствуйте.
ОтветитьУдалитьПодскажите пожалуйста по Вашей статье настроил формат даты всё получилось, но появилась другая проблема, так как получаю не одну дату, а сразу несколько из SQL запроса, при выводе всегда получаю одну и туже дату, которая выходит первая в запросе.
Описал несколько сумбурно, вот здесь есть пример кода: https://compositec1.codeplex.com/discussions/565375, если у Вас есть возможность подскажите.
Заранее спасибо за ответ.
Вопрос решили. Банально в не которых случаях значение даты было NULL из-за этого выходила ошибка, на которую не обратил должного внимания. В итоге добавил в запрос условие и DataForrmating оформил правильно, даты вышли как положено.
УдалитьПодробности есть здесь: https://compositec1.codeplex.com/discussions/565375