簡體   English   中英

計算XML元素中不區分大小寫的某些單詞的出現次數

[英]Counting ocurrences of certain words case-insensitive in an XML element

以下是XML文件的結構 -

<Datas>
  <Data>
    <Name>Information</Name>
    <Desc>Today is Monday, the starting day of the week.</Desc>
  </Data>
  <Data>
    <Name>Stackoverflow.com</Name>
    <Desc>Yesterday 1200 questions were posted. <b>TODAY</b>, till now 1300 questions are posted. So, today will be an important day for all the senior members.</Desc>
  </Data>
</Datas>

在上面的XML中,我想計算today單詞的出現次數。 這個詞可以是任何格式,如TodaytodayTODAY或者toDay 最后一個是不正確的,但如果用戶輸入這樣的話,就不應該錯過。

我正在使用查詢 -

count(/Datas/Data[contains(translate(Desc,'abcdefghijklmnopqrstuvwxyz', 'ABCDEFGHIJKLMNOPQRSTUVWXY'), 'TODAY')])

這是結果2,但總共有3個!! 如何包括所有?

這一個計為3:

count(/Datas/Data//text()/tokenize(upper-case(.), "[\P{L}]")[. = "TODAY"])

它使用fn:大寫用於大小寫標准化,而fn:tokenize用於隔離單詞。 請注意,此處的單詞需要用非字母分隔,這些字母的行為與使用fn:contains的原始查詢不同。 但這可能就是你想要的。

如果你正在使用BaseX(你記得那么),你可以使用非標准的ft:count ,這會讓生活變得更輕松。

ft:count(//*[text() contains text "today"])

另外一個好處是,此查詢將能夠使用全文索引,這將比為每個查詢標記文檔快得多。 請記住設置全文索引而不大寫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM