im ищет решение xslt для устранения дубликатов в XML-файле. Файл создан с помощью программного обеспечения epgrab. Он захватывает данные epg из dvb-s транспондеров и сохраняет его в * .xml-файле. Проблема в том, что мы читаем epg несколько раз в день, потому что некоторые данные изменяются в течение часа или около того, и нам нужно иметь фактические данные epg во времени. Иногда бывает, что записи имеют дубликаты. Их нужно устранить, потому что веб-сервер не должен читать файл размером 10 мегабайт каждый раз, когда кто-то открывает наш интерфейс iptv.Удалить дубликаты из xml (два условия)
файл XML выглядит следующим образом:
<programme channel="28007.dvb.guide" start="20150811143300 +0200" stop="20150811151800 +0200">
<title lang="de">Traumstädte: Stockholm - Die Entspannte</title>
<sub-title lang="de">Film von Ines Trams</sub-title>
<desc lang="de">Stockholm ist eine schwimmende Metropole mit einzigartiger Stadtgeografie: Jeweils ein Drittel der Stadtfläche b$
<language>de</language>
<!--language>mul</language-->
<!--language>mis</language-->
<!--language>de</language-->
<video>
<aspect>16:9</aspect>
</video>
<audio>
<stereo>stereo</stereo>
</audio>
<subtitles type="teletext">
<language>de</language>
</subtitles>
</programme>
Проблема здесь нам нужно проверить для канала ПИД-регулятора и старт/стоп - время не только одно условие. Возможно ли это каким-либо образом с xslt-1.0?
Благодарим за помощь!
Edit: Благодаря Мартин Honnen для форматирования моего кода:>
Спасибо, Мартин. Я попробовал это с предоставленным вами ключом, но я не получаю его, чтобы он работал правильно. – Ex1v0r
Подумайте, чтобы отредактировать свой вопрос с некоторыми образцами данных, которые вы хотите заказать, показывая нам результат, который вы хотите для этого образца. Ваша текущая попытка не имеет большого смысла, учитывая, что у вас есть ключ ('group', @fieldName) ', в то время как ваши элементы не имеют атрибута с именем' fieldName'. Поэтому вам нужно будет убедиться, что вы используете выражение, которое вычисляет значение ключа, например. 'match =" program [generate-id() = generate-id (key ('group', concat (@channel, '|', @start, '|', @stop)) [1])] "' –
Эй, Мартин, спасибо за ваш ответ. Теперь все работает отлично - я изменил «fieldName» на xsl: ключ, который вы предоставили два дня назад, и теперь он работает. Я попытался исключить записи, которые выглядят точно так же, как и код, который я предоставил. Файл содержит те же записи () несколько раз. Теперь я смог устранить все дубликаты. Ты спас мой день! –
Ex1v0r