我对XQuery还是很陌生,所以如果这非常简单,请原谅我。
基本上,我正在xml数据集中搜索单词“ has”,然后我希望能够返回“ has”之后紧随其后的单词,例如如果句子是“有火了吗?”我想返回单词“ there”。
XML语料库结构如下:
<s n="129">
<w c5="NP0" hw="indonesia" pos="SUBST">Indonesia</w>
<w c5="VHZ" hw="have" pos="VERB">has</w>
<w c5="AJ0" hw="large" pos="ADJ">large</w>
<w c5="NN2" hw="industry" pos="SUBST">industries</w>
<c c5="PUN">,</c>
<w c5="AV0" hw="recently" pos="ADV">recently</w>
<w c5="VVN" hw="develop" pos="VERB">developed</w>
</s>
在此数据样本中,我希望在“ has”之后紧跟着“ large”一词。
我当前的XQuery代码如下:
<hascount>
{
for $v in
doc ("KS0.xml")/bncDoc/stext/div/u/s/w
where
$v = "has"
return ($v)
}
</hascount>
它只是返回此刻具有的所有实例。我将如何更改此代码以执行上面的预期任务?
谢谢你。
所以我已经找到了自己的问题的答案。
这可以通过使用XPath轴“ following-sibling”来完成。
此代码在xquery中的实现将是:
<hascount>
{
for $v in
doc ("KS0.xml")/bncDoc/stext/div/u/s/w
where
$v = "has"
return ($v/following-sibling::*[1])
}
</hascount>