XQuery и XPath - тестирование дочернего элемента / атрибута на основе текущего атрибута - PullRequest
0 голосов
/ 01 ноября 2018

У меня есть множество структурированных XML-файлов

<seg type="dep_event" xml:id="MS609-0000-01">
  <date type="event_date" when="1245"/>
</seg>

Где <date type="event_date" when="1245"> необязательно.

Теперь в Xpath / Xquery 3.1 мне нужно проверить наличие date@when на основе текущего узла контекста seg/@xml:id.

Представьте себе такую ​​ситуацию в Xquery 3.1:

let $doc := doc(somedocument.xml)

for $xmlidattr in $doc//tei:seg[@type="dep_event"]/@xml:id

Теперь мне нужно проверить date/@when, используя $xmlidattr

Большое спасибо заранее.

РЕДАКТИРОВАТЬ: реструктурированный вопрос, чтобы быть более ясным об идее context node в XQuery

1 Ответ

0 голосов
/ 01 ноября 2018

Родителем id является seg, его дочерним элементом является date:

../date[@type="event_date"][@when="1245"]

Это был ответ на оригинальный вопрос. Вопрос изменился, и новый ответ -

$xmlidattr/../date[@type="event_date"][@when="1245"]

Однако я обычно начинаю с содержащего элемента, а не с атрибута:

for $seg in $doc//tei:seg[@type="dep_event"],
    $xmlidattr in $seg/@xml:id
return f($seg/date[@type="event_date"][@when="1245"])
...