У меня есть некоторые данные, которые выглядят примерно так:
<wrapper>
<inner a="1"/>
<inner a="2" b="3"/>
</wrapper>
Атрибут b может присутствовать или не присутствовать в каждом внутреннем элементе.Моя цель - найти все документы, содержащие хотя бы один внутренний элемент, который не имеет атрибута b. *
Этот похожий вопрос предлагает ответ:
cts:not-query(cts:element-attribute-value-query(xs:QName('inner'), xs:QName('b'), '*', ("wildcarded"))))
но это не работает, потому что некоторые внутренние элементы в одном и том же документе могут иметь атрибут b, а не-запросы работают со всем фрагментом, поэтому смешанный случай, такой как в примере выше, возвращаться не будет.Включение в запрос элемента не помогает, и кажется, что cts: and-not-query ведет себя так же.
Я также пытался решить проблему с помощью функций совместного использования / значений, чтобы прочитатьЗначения соответствующих атрибутов а, но это также представляется невозможным.Это могло бы быть возможно с настройками близости при одновременных вызовах, за исключением отсутствия текста элемента, поэтому атрибут индексируется с теми же позициями слова.
Есть ли альтернативы тупому xpath?
//inner[@a and not(@b)]