Выберите все дочерние элементы, кроме одного, с тем же тегом, что и родительский, используя XPath

#xml #xpath

#xml #xpath

Вопрос:

У меня есть XML-файл, который выглядит примерно так:

 <employee emp="1" dept="55">
        <name>Peter</name>
        <job>Director</job>
        <employee emp="12" dept="26">
                <name>John</name>
                <job>Animator</job>
                <employee emp="123" dept="27">
                        <name>James</name>
                        <job>Assistant</job>
                </employee>
        </employee>
</employee>
  

Структура XML представляет структуру компании, и мне нужно выбрать главу компании (Director), что означает выбор корневого элемента, employee но без employee дочерних элементов.

Я пробовал что-то вроде /employee/*[not(child::employee)] , но это всегда возвращает это:

         <name>Peter</name>
        <job>Director</job>
  

вместо того, что я хотел:

 <employee emp="1" dept="55">
        <name>Peter</name>
        <job>Director</job>
</employee>
  

Как я могу изменить свое выражение, чтобы оно соответствовало желаемому результату?

Заранее спасибо!

Комментарии:

1. Вы не можете преобразовать xml с помощью xpath. То, что вы ищете, — это трансформация после выбора. Вы могли бы использовать xslt.

2. Или вы можете попробовать xquery.