xmlstarlet XPath выражение выбирает один результат, а не несколько

У меня есть XML-файл, имеющий такую ​​структуру:

<?xml version="1.0" encoding="UTF-8"?>
<hudson>
    <authorizationStrategy>
        <roleMap type="globalRoles">
            <role name="Employees">
                <assignedSIDs>
                    <sid>abc</sid>
                    <sid>bcd</sid>                      
                </assignedSIDs>
            </role>
        </roleMap>
        <roleMap type="projectRoles">   
            <role name="test1" pattern=".*">
                <assignedSIDs>
                    <sid>abc</sid>
                    <sid>zxc</sid>
                </assignedSIDs>
            </role>
            <role name="test2" pattern=".*">
                <permissions/>
                <assignedSIDs>
                    <sid>abc</sid>
                    <sid>ghi</sid>
                </assignedSIDs>
            </role>
            <role name="test3" pattern=".*">
                <permissions/>
                <assignedSIDs>
                    <sid>abc</sid>
                </assignedSIDs>
            </role>
        </roleMap>
    </authorizationStrategy>
</hudson>

Раньше я не давал всей рассматриваемой структуры и xpath, который я получил в решении, не давал ожидаемого результата (в моей системе, но он дал человеку, который ответил на мой вопрос) по следующей ссылкезначение атрибута поискового тега на основе значения дочернего узла с использованием XmlStarlet

Как уже упоминалось в этой ссылке, я хочу найти атрибут имени тега роли на основе значения тега sid. например: если я ищу abc, запрос должен вернуть Employees, test1, test2 и test3.

Вот скрипт, который я использовал:

xmlstarlet sel -t -v "//role[.//sid = 'abc']/@name" test.xml

но это дало мне только «сотрудников».

Я использую LINUX / Bash. Скажите, пожалуйста, что мне не хватает в выражении XPATH.

Ответы на вопрос(2)

Ваш ответ на вопрос