Выражение XPath с несколькими предикатами

Пакетный API GetItems включает в себя versionType типа GitVersionType :

Тип версии (ветвь, тег или коммит) , Определяет, как Id интерпретируется

blockquote>

Так что, если вы добавите к URL-адресу REST API атрибуты:

?versionType=Branch&version=myBranch

Этого должно быть достаточно, чтобы получить элементы из определенной ветви [1115 ]

Как упоминается в OP, он дает промежуточный URL, который указывает на:

http://tfsserver:8080/tfs/{organization}/{project}/_apis/git/repositories/{repositoryId}/items/{path}?versionType=Branch&version=myBranch

Это означает:

45
задан Mike 20 May 2014 в 09:02
поделиться

3 ответа

Следующее должно сделать то, что Вы после:

/root/user[login='user1' and 
           name='User 1' and 
           profile='admin' and
           profile='operator']

Наличие двух тестов для эти profile значение могло бы казаться нечетным, но поскольку существуют приблизительно profile узлы затем, условие будет удовлетворено, что целый по крайней мере один узел соответствует тесту.

причина можно выдержать сравнение profile непосредственно с string, даже при том, что это на самом деле node, то, что string-value из узла элемента string-value из всех его потомков, связанных вместе, который в этом случае является просто содержанием value.

, Если бы profile содержал больше элементов, чем [1 111], необходимо было бы использовать немного более сложный тест предиката для определения существования соответствия profile узел, базирующийся только на value (это должно работать с обновленным вопросом):

/root/user[login='user1' and 
           name='User 1' and 
           profile[value='admin'] and
           profile[value='operator']]
70
ответ дан Greg Beech 26 November 2019 в 21:18
поделиться

Вот более точный ответ (в настоящее время, ответ Greg Beech не проверяет на условие 3. в проблеме: user элемент должен иметь точно 2 profile дети):

/*/user
        [login='user1' 
        and            
         name='User 1' 
        and  
         not(profile[3])
        and          
         profile/value='admin' 
        and           
         profile/value='operator'
         ]
6
ответ дан Dimitre Novatchev 26 November 2019 в 21:18
поделиться

Принятие users является корнем:

/users/user[login='user1' and name='User 1' 
            and (profile='admin' and profile='operator')]
1
ответ дан dirkgently 26 November 2019 в 21:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: