[英]last function in xquery
我正在使用last()函數來嘗試獲取xml中的最后一個條目,如下所示:
//Name[last()]
但是,它會將列表返回給我,而不僅僅是文檔中的姓氏……有什么建議嗎?
謝謝
由於“ //”代表什么,這是一個常見的陷阱。 許多人認為它代表后代軸,但實際上代表/descendant-or-self::node()/
。
//Name[last()]
是/descendant-or-self::node()/Name[last()]
縮寫,這使得以下事實更加明顯:該表達式實際上包含兩個步驟:
/descendant-or-self::node()
,它選擇上下文節點及其所有后代,以及 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.