Как преобразовать моды mysql по умолчанию в дату и время UTC, используя xslt - PullRequest
1 голос
/ 18 июля 2010

Мне нужно преобразовать стандартные моды mysql в форматированные даты в формате UTC, используя xslt.

У меня есть XML-документ, который содержит даты, созданные в формате mysql в следующем формате: 2010-06-30 15: 20: 43.0

Теперь они находятся в документе XML в элементе "datetamp" 2010-03-16 13: 52: 56,0

Для публикации через канал oai-pmh их необходимо преобразовать в формат UTC: 2010-06-30T15: 20: 43Z

Даты ISO 8601 UTC определены здесь: http://www.w3.org/TR/NOTE-datetime

У меня нет доступа к исходной базе данных mysql, только дамп XML.

1 Ответ

2 голосов
/ 18 июля 2010

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

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

 <xsl:template match="node()|@*">
     <xsl:copy>
       <xsl:apply-templates select="node()|@*"/>
     </xsl:copy>
 </xsl:template>

 <xsl:template match="text()">
  <xsl:value-of select=
   "concat(
           translate(substring-before(.,'.'),
                     ' ',
                     'T'
                     ),
            'Z'
            )
   "/>
 </xsl:template>
</xsl:stylesheet>

при применении к этому документу XML :

<oai:datestamp xmlns:oai="some:ns">2010-03-16 13:52:56.0</oai:datestamp>

создает искомое значение,правильный результат :

<oai:datestamp xmlns:oai="some:ns">2010-03-16T13:52:56Z</oai:datestamp>

Примечание: : значение преобразуется в требуемый формат с использованием одного выражения XPath, поэтому я добавил тег xpath.

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