2012-05-19 40 views
4

我開始在w3cschool學習xpath。我正在評估遊戲中的玩家人數。 (所以計數的屏幕名和文本()元/屬性)xpath,count elements error:「Result is a NodeSet contains 1 element」

這裏是我的示例XML:

<game> 
    <info> 
     <name>My Game</name> 
     <description>A <i>very</i> interesting game.</description> 
     <started>2012-03-01T18:00:00Z</started> 
     <players number="2"> 
      <screenname player="1">Alice</screenname> 
      <screenname player="2">Bob</screenname> 
     </players> 
     <rounds>2</rounds> 
     <winner player="2"/> 
    </info> 
</game> 

我使用XPath查詢:

//game/info/players[count(.//screenname/text())] 

但我只得到:

"Result is a NodeSet containing 1 element" 

(工具:http://www.whitebeam.org/library/guide/TechNotes/xpathtestbed.rhtm

是什麼原因導致了這個錯誤?

回答

11

你的XPath查詢大概應該是:

count(/game/info/players/screenname) 

你現在正在使用XPath是要求其中有一個非零數字的screenname/text()後代節點的所有game/info/players節點。由於只有一個players元素,因此生成的節點集僅包含一個元素。請記住,XPath是一系列由步驟(/)分隔的軸節點測試謂詞表達式(axis::nodetest[predicate])。只有axis-nodetest是發送到下一步的結果集的一部分 - 謂詞從不出現在結果集中,因爲它僅用於過濾。

+0

在這種情況下,'// game/info/players [count(./ screenname/text())]'是否等於'// game/info/players [2]'? –

+1

我發現它有助於將謂詞中的[[]'讀作「這樣的」。 –

相關問題