簡體   English   中英

xquery中的最后一個函數

[英]last function in xquery

我正在使用last()函數來嘗試獲取xml中的最后一個條目,如下所示:

//Name[last()]

但是,它會將列表返回給我,而不僅僅是文檔中的姓氏……有什么建議嗎?

謝謝

由於“ //”代表什么,這是一個常見的陷阱。 許多人認為它代表后代軸,但實際上代表/descendant-or-self::node()/

//Name[last()]/descendant-or-self::node()/Name[last()]縮寫,這使得以下事實更加明顯:該表達式實際上包含兩個步驟:

  1. /descendant-or-self::node() ,它選擇上下文節點及其所有后代,以及
  2. Name[last()] ,它選擇上下文節點的最后一個<Name>子級。

對於步驟1返回的每個節點,對步驟#2進行一次評估。如果步驟1返回10個節點,則步驟2(以及整個表達式)也最多可以返回10個節點。

如果改為用括號來封裝表達式,則可以使用“表達式過濾器”而不是“步驟過濾器”: (//Name)[last()]

這樣可以確保整個表達式將返回不超過1個<Name>元素,特別是在該表達式左側返回的所有元素中,按文檔順序排列的最后一個。

有關更多詳細信息和細微差別,請查看以下電子郵件線程: http : //markmail.org/thread/otd3iz5lag72emq4#query :+ page :1+ mid : qdsrmjrbbdvve3c3+ state: results

而這篇文章: http : //developer.marklogic.com/blog/xpath-punctuation-part-5

//Name[last()]選擇作為其父級的最后一個子級的所有Name元素。

嘗試使用(//Name)[last()]

暫無
暫無

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

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