Использование xmlstarlet для выбора из XML — синтаксический запрос

У меня есть файл XML, который я пытаюсь преобразовать во что-то более похожее на формат CSV (ну, какой-то формат, который помещает вывод в одну строку с общим разделителем), но я не могу правильно понять синтаксис, может ли кто-нибудь помочь пожалуйста? XML выглядит следующим образом:

<?xml version="1.0" encoding="UTF-8"?>
<TranslationTable>
        <Translation Key="Document1" RelativePath="/home/path1">
                <Title>Doc1</Title>
                <Description>First document</Description>
        </Translation>
        <Translation Key="Document2" RelativePath="/home/path2">
                <Title>Doc2</Title>
                <Description>Second document</Description>
        </Translation>
</TranslationTable>

И моя команда в настоящее время это

xmlstarlet sel -t -m //Translation -v @Key -o "|" -v @RelativePath -n /root/XML/file.xml
Document1|/home/path1
Document2|/home/path2

Но я хотел бы также включить содержимое поля «Заголовок», чтобы вывод был таким

Document1|/home/path1|Doc1
Document2|/home/path2|Doc2

Кто-нибудь может помочь, пожалуйста? Спасибо.


person user3419089    schedule 14.03.2014    source источник


Ответы (1)


Это XPath:

xmlstarlet sel -t -m //Translation -v @Key -o "|" -v @RelativePath  -v 'Title/text()' -n /root/XML/file.xml
person reinierpost    schedule 14.03.2014