Сначала попробуйте этот простой xpath - проверьте, что он работает, и что его не достаточно производительный для вас.
//elemZ[@mytype=1]/myval[. = "100" ]
Это должно вернуть myval дочерние элементы elemZ с mytype =1 и myval text content = "100"
Для более эффективной работы (с cts: query) понадобятся эти "страшные" другие cts: запросы и, возможно, некоторые индексы диапазона.Грубо говоря: (не проверено)
search(doc(),
cts:element-query(xs:QName("elemZ"),
cts:and-query((
cts:element-attribute-value-query(xs:QName("elemZ"), xs:QName("mytype"), "1"),
cts:element-value-query(xs:QName("myval"), "100") )) ) )
Рекомендую начать с самого простого выражения, которое делает что угодно , а затем одно за другим добавляет ограничения.
В вашем случае вполне возможно, что оптимизатор запросов оптимизирует простой xpath в соответствующий запрос cts.Стоит попробовать и измерить производительность.Мне лично нравится начинать с базового xpath, а затем работать только с запросом cts: по мере необходимости.