XMLPATH: поиск ДОПОЛНИТЕЛЬНОЙ информации в плоской структуре

Я получил следующий XML

<doc>
    <start/>
    <mandatory id='x1'/>
    <optional id='foo'/>
    <end/>
    <start/>
    <mandatory id='x2'/>
    <end/>
    <start/>
    <mandatory id='x3'/>
    <optional id='boo'/>
    <end/>
</doc>

структура которого плоская. Согласованный набор информации начинается с тега, но заканчивается тегом. Определенная информация в наборе является обязательной, здесь другие нет, здесь

Мой процесс использует XPATH 1.0, чтобы сначала извлечь начальный узел, а после этого для каждого начального узла я хочу иметь как обязательную, так и необязательную информацию.

Моя проблема заключается в том, чтобы найти правильное выражение XPATH для получения необязательного узла, который соответствует текущему узлу итерации, предоставленной

/док/старт

Я уже дал формулу Kayessian XPath 1.0

Как выполнять операции с множествами в XPath 1.0 XPath выбирает все элементы между двумя конкретными элементами

получить пересечение двух множеств попробовать

следующий-брат::необязательный[количество(. | следующий-брат::конец[1]/предшествующий-брат::необязательный)=(счетчик(следующий-брат::конец[1]/предшествующий-брат::необязательный)) ]

Большое спасибо

ура Кристиан


person Christian Meichsner    schedule 28.09.2015    source источник
comment
Можете ли вы обеспечить желаемый результат? Почему бы не использовать XSLT? XSLT может содержать несколько XPath и возвращать несколько узлов.   -  person Parfait    schedule 28.09.2015
comment
Спасибо, что ответили мне. Фреймворк установлен, приложение запущено, поэтому я, к сожалению, полагаюсь на XPATH. Желаемый вывод для выбора идентификатора для необязательного тега находится в итерации 1 foo, в итерации 2 пусто (набор узлов) и в итерации 3 boo . Надеюсь, это поможет. заранее спасибо   -  person Christian Meichsner    schedule 29.09.2015