Я борюсь с преобразованием данных и очень ценю вашу помощь и советы.Преобразование преобразований XML в XML
Я хотел бы преобразовать довольно большой XML-файл в другой формат XML. Мои коллеги говорят мне, что использование XSLT решит мою проблему, однако на первый взгляд я считаю, что XSLT не способен выполнять условное форматирование, которое мне нужно. Как вы можете видеть из моего xml, мне нужно получить несколько таймсерийных точек из указанного интервала времени, описанного в тегах начала и окончания.
Мой вопрос, поэтому, что такое лучшая практика для такой проблемы? Легко ли это разрешимо с помощью XSLT или с использованием другой технологии? Или это лучший способ написания пользовательского кода?
Ждем ваших ответов.
С уважением!
XML трансформироваться:
<starttime>
<datetime>201605130500</datetime>
<qualifier>163</Qualifier>
</starttime>
<endtime>
<datetime>201605150500</datetime>
<qualifier>164</Qualifier>
</endtime>
<seriesPeriod>
<quantityDetails>
<quantity>8.0</quantity>
<qualifier>135</qualifier>
</quantityDetails>
<datetimeDetails>
<datetime>201605130500201605130600</datetime> <!-- This is a period to from 05:00 to 06:00 (from-to YYYYMMDDHHH-YYYYMMDDHHH) -->
<qualifier>324</qualifier>
</datetimeDetails>
</seriesPeriod>
<seriesPeriod>
<quantityDetails>
<quantity>-11</quantity>
<qualifier>135</qualifier>
</quantityDetails>
<datetimeDetails>
<dateTime>201605130600201605130700</dateTime>
<qualifier>324</qualifier>
</datetimeDetails>
</seriesPeriod>
<!-- Continues with a total of 48 similar "seriesPeriod", one point for each hour in the timeinterval derived from starttime and endtime -->
Ожидаемый результат после преобразования:
<timeseries>
<timeinterval>
<start>2016-05-13T05:00Z</start>
<end>2016-05-15T05:00Z</end>
</timeinterval>
<point>
<position>1</position>
<quantity>8</quantity>
</point>
<point>
<position>2</position>
<quantity>-11</quantity>
</point>
<!-- Continues with a total of 48 similar "points", one point for each hour in the timeinterval -->
</timeseries>
XSLT может быть хорошим инструментом для задачи здесь, но вам нужно будет объяснить логику вашей необходимой трансформации. В частности, где значения «количества» исходят из ожидаемого результата? Спасибо –
Объяснение логики - наряду с более полным (и правильно сформированным!) Примером - было бы полезно. Также укажите, можете ли вы использовать XSLT 2.0. –
Уточните, как рассчитывается количество «4» в первой точке и «-11» на второй точке. –