• <button id="eiyoe"><acronym id="eiyoe"></acronym></button>
    <em id="eiyoe"></em>

  • <rp id="eiyoe"><acronym id="eiyoe"><input id="eiyoe"></input></acronym></rp>
      查看: 2789|回復: 0
      上一主題 下一主題

      XQuery 選擇和過濾

      1298

      主題

      0

      好友

      39

      積分

      管理員 離線 發信

      跳轉到指定樓層
      樓主
      發表于 2014-02-19 16:54 | 只看該作者 | 倒序瀏覽

      XQuery 選擇和過濾

      XML實例文檔

      我們將在下面的例子中繼續使用這個 "books.xml" 文檔(和上面的章節所使用的 XML 文件相同)。

      在您的瀏覽器中查看 "books.xml" 文件。

      選擇和過濾元素

      正如在前面的章節所看到的,我們使用路徑表達式或 FLWOR 表達式來選取和過濾元素。

      請看下面的 FLWOR 表達式:

      for $x in doc("books.xml")/bookstore/bookwhere $x/price>30order by $x/titlereturn $x/title
      for
      (可選) 向每個由 in 表達式返回的項目捆綁一個變量
      let
      (可選)
      where
      (可選) 設定一個條件
      order by
      (可選) 設定結果的排列順序
      return
      規定在結果中返回的內容

      for 語句

      for 語句可將變量捆綁到由 in 表達式返回的每個項目。for 語句可產生迭代。在同一個 FLWOR 表達式中可存在多重 for 語句。

      如需在一個 for 語句中進行指定次數地循環,您可使用關鍵詞 to

      for $x in (1 to 5)return <test>{$x}</test>

      結果:

      <test>1</test><test>2</test><test>3</test><test>4</test><test>5</test>

      關鍵詞 at 可用于計算迭代:

      for $x at $i in doc("books.xml")/bookstore/book/titlereturn <book>{$i}. {data($x)}</book>

      結果:

      <book>1. Everyday Italian</book><book>2. Harry Potter</book><book>3. XQuery Kick Start</book><book>4. Learning XML</book>

      在 for 語句中同樣允許多個 in 表達式。請使用逗號來分割每一個 in 表達式:

      for $x in (10,20), $y in (100,200)return <test>x={$x} and y={$y}</test>

      結果:

      <test>x=10 and y=100</test><test>x=10 and y=200</test><test>x=20 and y=100</test><test>x=20 and y=200</test>

      let 語句

      let 語句可完成變量分配,并可避免多次重復相同的表達式。let 語句不會導致迭代。

      let $x := (1 to 5)return <test>{$x}</test>

      結果:

      <test>1 2 3 4 5</test>

      where 語句

      where 語句用于為結果設定一個或多個條件(criteria)。

      where $x/price>30 and $x/price<100

      order by 語句

      order by 語句用于規定結果的排序次序。在這里,我們要根據 category 和 title 來對結果進行排序:

      for $x in doc("books.xml")/bookstore/bookorder by $x/@category, $x/titlereturn $x/title

      結果:

      <title lang="en">Harry Potter</title><title lang="en">Everyday Italian</title><title lang="en">Learning XML</title><title lang="en">XQuery Kick Start</title>

      return 語句:

      return 語句規定要返回的內容。

      for $x in doc("books.xml")/bookstore/bookreturn $x/title

      結果:

      <title lang="en">Everyday Italian</title><title lang="en">Harry Potter</title><title lang="en">XQuery Kick Start</title><title lang="en">Learning XML</title>

      來源:http://www.w3school.com.cn/xquery/xquery_select.asp