2015-08-11 2 views
0

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 для форматирования моего кода:>

ответ

0

С XSLT 1.0 к группе элементам своего подход называется Muenchian группировки на основе ключа, так что вы можете определить ключ <xsl:key name="group" match="programme" use="concat(@channel, '|', @start, '|', @stop)"/> см http://www.jenitennison.com/xslt/grouping/muenchian.xml для деталей.

+0

Спасибо, Мартин. Я попробовал это с предоставленным вами ключом, но я не получаю его, чтобы он работал правильно. – Ex1v0r

+0

Подумайте, чтобы отредактировать свой вопрос с некоторыми образцами данных, которые вы хотите заказать, показывая нам результат, который вы хотите для этого образца. Ваша текущая попытка не имеет большого смысла, учитывая, что у вас есть ключ ('group', @fieldName) ', в то время как ваши элементы не имеют атрибута с именем' fieldName'. Поэтому вам нужно будет убедиться, что вы используете выражение, которое вычисляет значение ключа, например. 'match =" program [generate-id() = generate-id (key ('group', concat (@channel, '|', @start, '|', @stop)) [1])] "' –

+0

Эй, Мартин, спасибо за ваш ответ. Теперь все работает отлично - я изменил «fieldName» на xsl: ключ, который вы предоставили два дня назад, и теперь он работает. Я попытался исключить записи, которые выглядят точно так же, как и код, который я предоставил. Файл содержит те же записи () несколько раз. Теперь я смог устранить все дубликаты. Ты спас мой день! – Ex1v0r

Смежные вопросы