我有许多结构化的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
非常感谢。
编辑:重组后的问题可以更清楚地了解XQuery中的context node
的概念
答案 0 :(得分:2)
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"])