0
我從來沒有處理過XML數據庫(或以複雜形式查詢XML),所以這個xquery對我來說都是新手。我已經閱讀了Datypic書,我最初試圖將XML解析爲數據庫,但這些標籤有意義,而且關係數據庫增加了更多複雜性。XQuery - 查詢相鄰標記
我有一個包含關於所使用的詞成績單和一些細節上的文件,該結構是這樣的:
<text id="KBY">
<bncDoc xml:id="KBY">
<stext type="CONVRSN">
<u who="KBYPSUNK">
<w tag="UH" hw="hi" pos="INTERJ" sem="Z4" semo="|Z4|">Hi</w>
<w tag="YEX" hw="PUNC" pos="STOP" sem="" semo="|">!</w>
</u>
<u who="PS10L">
<w tag="VVGK" hw="going" pos="VERB" sem="T1:1:3" semo="|T1:1:3|">Gon</w>
<w tag="TO" hw="to" pos="PREP" sem="Z5" semo="|Z5|">na</w>
<w tag="RR21" hw="at" pos="ADV" sem="A13:7" semo="|A13:7;i1:2:1|">at</w>
<w tag="RR22" hw="least" pos="ADV" sem="A13:7" semo="|A13:7;i1:2:2|A13:7|">least</w>
<w tag="VVI" hw="stop" pos="VERB" sem="T2" semo="|T2d|S8d|M8|H4|A1:1:1|">stop</w>
<w tag="II" hw="at" pos="PREP" sem="Z5" semo="|Z5|">at</w>
<w tag="NP1" hw="gerald" pos="SUBST" sem="Z1" semo="|Z1m|">Gerald</w>
<w tag="GE" hw="'s" pos="UNC" sem="Z5" semo="|Z5|">'s</w>
<w tag="VHZ" hw="have" pos="VERB" sem="Z5" semo="|Z5|A9u|A2:2|S4|">has</w>
<w tag="XX" hw="not" pos="ADV" sem="Z6" semo="|Z6|">n't</w>
<w tag="PPHS1" hw="he" pos="PRON" sem="Z8" semo="|Z8m|">he</w>
<w tag="YQUE" hw="PUNC" pos="STOP" sem="" semo="|">?</w>
</u>
中平凡的,我知道我可以使用單個字詞查詢:
for $w in //w
where $w = "houses"
return $w
OR
for $w in //w//text()
where $w = "houses"
return $w
但我不能在我的生活中弄清楚我如何能夠查詢一個以上的單詞。即「有三間房子」。這將涉及檢查每個單詞是否相鄰,並且不在單獨的u
標記中。理想情況下,我可以在之前和之後抓住幾個字。到目前爲止,我認爲這很困難,因爲它的結構,但搜索普通文件需要6秒以上,而BaseX似乎對此非常有效。
任何幫助表示讚賞!
您是否考慮將示例中的「有三個房屋」更改爲您的示例XML中出現的短語?另外,你能否澄清一下,如果你正在搜索文本節點或'@ hw'中的規範化單詞?最後,你可以鏈接到關於這種格式的任何信息 - 這將解釋許多屬性? (或者如果它們不重要,或許最好將它們從樣本中剝離出來,從而提高信噪比。)對我而言,奇怪的是沒有關於''元素之間的空白的明確信息 - 重要的搜索文本時。 –
joewiz
另外,您可否請編輯您的示例文本是格式良好的XML? – joewiz
當我回家時,我會這樣做,感謝您的反饋。這個XML結構是由非技術人員創建的,我很願意接受它。我爲它創建了一個模式,但我同意這很難解析。我能夠處理空白的唯一方法是使用'pos'屬性的規則,但我知道這並不理想。 –