powered by simpleCommunicator - 2.0.31     © 2024 Programmizd 02
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Добавить время к дате.
8 сообщений из 8, страница 1 из 1
Добавить время к дате.
    #39819654
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Встала простая задача, решить которую не могу.
Точнее не могу понять, чем это можно сделать.

Есть XML файл.
В нем есть значения типа "дата"
Надо поменять его на значение типа "Дата+время"
Время начать с 12:00, добавляя одну секунду к каждому следующему значению.

туплю.
...
Рейтинг: 0 / 0
Добавить время к дате.
    #39819842
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
982183,

XSL? Давайте пример файла и что хочется получить
...
Рейтинг: 0 / 0
Добавить время к дате.
    #39819908
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да вопрос основной в инструментарии.

Подправить относительно маленький XML файл.
Ну не макрос же писать...
И не 1С-ом же править...
...
Рейтинг: 0 / 0
Добавить время к дате.
    #39819994
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну вот

XML
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<?xml version="1.0" encoding="utf-8"?>
<root>
  <date>2019-05-29</date>
  <date>2019-05-29</date>
  <date>2019-05-29</date>
  <date>2019-05-29</date>
  <date>2019-05-29</date>
  <date>2019-05-29</date>
  <date>2019-05-29</date>
</root>



XSL
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
<?xml version="1.0" encoding="utf-8"?>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

  <xsl:template match="/root">
    <root>
      <xsl:apply-templates select="date"/>
    </root>
  </xsl:template>

  <xsl:template match="date">
    <dateTime>
      <xsl:variable name="pos" select="position() + 12 * 3600 - 1"/>
      <xsl:variable name="_sec" select="$pos mod 60"/>
      <xsl:variable name="_min" select="(($pos - $_sec) div 60) mod 60"/>
      <xsl:variable name="hour">
        <xsl:call-template name="zero">
          <xsl:with-param name="val" select="($pos - $_sec - $_min) div 3600"/>
        </xsl:call-template>
      </xsl:variable>
      <xsl:variable name="min">
        <xsl:call-template name="zero">
          <xsl:with-param name="val" select="$_min"/>
        </xsl:call-template>
      </xsl:variable>
      <xsl:variable name="sec">
        <xsl:call-template name="zero">
          <xsl:with-param name="val" select="$_sec"/>
        </xsl:call-template>
      </xsl:variable>
      <xsl:value-of select="concat(., 'T', $hour, ':', $min, ':', $sec)"/>
    </dateTime>
  </xsl:template>

  <xsl:template name="zero">
    <xsl:param name="val"/>
    <xsl:choose>
      <xsl:when test="$val &lt; 10">
        <xsl:value-of select="concat('0', $val)"/>
      </xsl:when>
      <xsl:otherwise>
        <xsl:value-of select="$val"/>
      </xsl:otherwise>
    </xsl:choose>
  </xsl:template>
</xsl:stylesheet>


Вывод
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<?xml version="1.0" encoding="UTF-8"?>
<root>
  <dateTime>2019-05-29T12:00:00</dateTime>
  <dateTime>2019-05-29T12:00:01</dateTime>
  <dateTime>2019-05-29T12:00:02</dateTime>
  <dateTime>2019-05-29T12:00:03</dateTime>
  <dateTime>2019-05-29T12:00:04</dateTime>
  <dateTime>2019-05-29T12:00:05</dateTime>
  <dateTime>2019-05-29T12:00:06</dateTime>
</root>
...
Рейтинг: 0 / 0
Добавить время к дате.
    #39820127
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да. Спасибо. Именно то.

XSL! как то прошло это вне ..
...
Рейтинг: 0 / 0
Добавить время к дате.
    #39820341
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
982183Спасибо. Именно то.Дисклеймер: переход через границу суток не учитывается
...
Рейтинг: 0 / 0
Добавить время к дате.
    #39820360
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
86400 документов там явно не будет, да и напильником еще работать прилично.
Даже не знаю. сделать по уму.
Или вернуться к проверенному паскалю.
Или натравить кого из молодых...
...
Рейтинг: 0 / 0
Добавить время к дате.
    #39820377
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
98218386400 документов там явно не будет,24200. Мы от 12:00 пляшем
982183Или вернуться к проверенному паскалю.По опыту - преобразования проще делать через XSL.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Добавить время к дате.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]