XPath, который выбирает второй элемент, если первый элемент является пустым

голоса
0

У меня есть XML, который иногда выглядит следующим образом:

<object>
    <item>
        <name>Item Name</name>
    </item>
 </object>

А потом может иногда не хватает Имя элемента и имеет другое название:

<object>
    <item>
        <name/>
        <altname>Item Name 2</altname>
    </item>
 </object>

Логика, что мне нужно:

Если имеет значение, используйте это. Если этого не произошло, используйте.

Я попытался адаптировать то, что я нашел здесь:

XPath: По умолчанию к 'Node A', выберите 'Node B' вместо того, чтобы, если 'Node B' не является пустым

Но без толку ... какие-то идеи?

Задан 20/10/2018 в 13:52
источник пользователем
На других языках...                            


1 ответов

голоса
2

С помощью XPath-2.0 и выше вы можете сделать это с

if (item/name !='') then item/name else item/altname

С помощью XPath-1,0 только это немного сложнее, но это будет работать:

item/name[. !=''] | item/altname[../name ='']
Ответил 20/10/2018 в 14:13
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more