//s:Annotation[@type='attitude']/s:Content/s:Parameter[@role='type' and not(text())]
Что ж, я не понимаю нотацию s:
и не могу найти ее в спецификации XPath. Однако, игнорируя, что это будет выглядеть так:
(
(xml
\\ "Annotation"
filter (_ \ "@type" contains Text("x"))
)
\ "Content"
\ "Parameter"
filter (el => (el \ "@type" contains Text("type")) && el.isInstanceOf[Text])
)
Обратите внимание на необходимость скобок из-за более высокого приоритета \
над filter
. Я изменил форматирование на многострочное выражение, поскольку эквивалент Scala слишком многословен для одной строки.
Хотя я не могу ответить о пространствах имен. Понятия не имею, как с ними работать в поисках, если это вообще возможно. Документы упоминают @{uri}attribute
для префиксных атрибутов, не упоминает ничего о префиксных элементах. Также обратите внимание, что вам нужно передать uri, который разрешается в нужное вам пространство имен, так как буквенные пространства имен в поиске не поддерживаются.