2012-04-20 12 views
1

Каковы параметры отображения/вывода даты в HTML в каком-то читаемом формате. Я имею в виду, если я просто показываю значение date_last_activity, он выглядит wierd: S Так что мой вопрос IS делает XSLT предлагает любые преобразования формата даты вообще?Преобразование даты XSLT - изменение формата данных

XML:

<date_last_activity format="MMDDCCYY">04132012</date_last_activity> 

шаблона XLS:

<xsl:value-of select="date_last_activity"/> 

HTML:

04132012 

предпочел бы, как это выглядеть 04/13/2012 ...

Я много читал на XSLT, думаю это можно сделать «шаблон» => FormatDate ... но понятия не имею, с чего начать: S

ответ

3

Это преобразование:

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output omit-xml-declaration="yes" indent="yes"/> 

<xsl:template match="date_last_activity"> 
    <xsl:value-of select= 
    "concat(
    substring(., 
       string-length(substring-before(@format, 'MM'))+1, 
       2 
       ), 
    '/', 
    substring(., 
       string-length(substring-before(@format, 'DD'))+1, 
       2 
       ), 
    '/', 
    substring(., 
       string-length(substring-before(@format, 'CCYY'))+1, 
       4 
       ) 

     )"/> 
</xsl:template> 
</xsl:stylesheet> 

применительно к предоставленному документу XML:

<date_last_activity format="MMDDCCYY">04132012</date_last_activity> 

дает желаемый, правильный результат:

04/13/2012 

Когда же преобразование применяется к следующему документу XML:

<date_last_activity format="CCYYDDMM">20121304</date_last_activity> 

тот же правильный результат получается:

04/13/2012 
0

Если вам нужно сделать, это п больше чем одно место, создать именованный шаблон где-то в XSL

EDIT: шаблон не появляется из-за неправильного форматирования ...

<xsl:template name="formats_date"> 
    <xsl:param name="raw_date" /> 
    <xsl:value-of select="concat(substring($raw_date, 0, 2), '/', substring($raw_date, 2, 2), '/', substring($raw_date, 4))" /> 
</xsl:template> 

Затем нанесите его как

<xsl:call-template name="formats_date"> 
    <xsl:with-param name="raw_date" select="date_last_activity" /> 
</xsl:call-template/> 

в противном случае вы можете просто сделать XSL: стоимостью от CONCAT ... материал непосредственно там, где вам это нужно

+0

Спасибо за отзыв. Но моя проблема заключается в том, что я не знаю, как создать именованный шаблон, я пробовал жестко: S – ProDraz

+0

попробуйте еще раз - я не форматировал код, и он не показывает – gotofritz

0

XSLT 2.0 предлагает функцию Format-дату(). Однако перед его использованием вам нужно будет преобразовать свою дату в формат ISO, YYYY-MM-DD, который может быть выполнен с использованием concat и подстроки.

Если вы все еще придерживаетесь XSLT 1.0, есть библиотека функций обработки дат и шаблонов, доступных на сайте www.exslt.org.

+0

Привет, Sir, Знаете ли вы, где один может найти пример преобразования даты в ISO с помощью concat и substring? Спасибо! – toddmo

+0

Зачем вам пример? Это очень простые функции. Если у вас возникла проблема с пониманием спецификаций, задайте новый вопрос. Если вы понимаете спецификации, но не можете написать код, я не могу вам помочь. –

+0

Ну, шаблон, необходимый для преобразования моего формата даты в ISO, в целом, оказался чем-то более привлекательным, но я смог это сделать. Я отправил свой код в качестве ответа на: http://stackoverflow.com/questions/10605088/xslt-convert-date-format-to-iso/18991073#18991073 – toddmo

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