Я хочу преобразовать файл .xml в другой файл .xml той же схемы с помощью xslt. Причина состоит в том, чтобы объединить некоторые основанные на времени измерения, хранящиеся во входном файле, в новую временную базу в выходной файл. XML-файл является дампом из rrdtool, который не может конвертировать его, поэтому я пробую его с помощью xslt.
Я использовал XSLT несколько раз, и у меня есть декларативные идеи, но в этой конкретной проблеме я не могу справиться, даже не знаю, с чего начать:
Входные данные XML организованы по измерениям по 1 секунде для каждого датчика. В этом примере заголовок удален, для двух датчиков есть 60 временных отметок (например, 14: 09.00 .01 ... .59), но в действительности это тысячи отметок времени:
input.xml:
<timestamp>
<sensor>1.1</sensor>
<sensor>2.3</sensor>
</timestamp>
<timestamp>
<sensor>1.2</sensor>
<sensor>2.2</sensor>
</timestamp>
...
<timestamp>
<sensor>1.9</sensor>
<sensor>NaN</sensor>
</timestamp>
Полученные выходные XML-данные должны быть организованы путем измерения продолжительностью 1 минута, поэтому каждые 60 входных временных меток объединяются в среднем в 1 новую временную метку (например, 3600 секунд в 60 минут), в которую все еще входят 2 датчика:
output.xml:
<timestamp>
<sensor>1.5</sensor>
<sensor>2.1</sensor>
</timestamp>
Приведенный выше пример очень минимизирован, практически я имею дело с одним файлом с 10.000 временных меток и от 2 до 24 датчиков - так что «хардкодирование» не является хорошим решением, оно должно быть решением на основе шаблона xslt-1.0.
Я не знаю, как получить несколько данных датчиков, потому что они организованы в столбцы (тег «датчик»), инкапсулированные в строки (тег «метка времени»).
Я не знаю, как хранить промежуточные значения для консолидации для каждого датчика.
Иногда во входном файле есть недопустимые значения измерения «NaN», которые должны игнорироваться при консолидации, если ни одно из них не является действительным, тогда выходное значение также равно «NaN».
Так много ?????
Спасибо
Ахим