2011-12-13 123 views
1

我正在評估JxPath 1.3中的表達式'' = 0,我期望結果是錯誤的。這是我的代碼:JxPath:評估''= 0

JXPathContext.newContext(ctaSectionABean).getValue("'' = 0"); 

但是,結果返回是真的!如果我評價在Eclipse的JXPath工具,我得到錯誤的,這是我希望是正確的同樣的表情,因爲documentation of xpath1.0 3.4節說以下內容:

如果要比較沒有一個對象是節點集合和運營商是= 或!=,則通過將對象轉換爲如下共同的 類型進行比較,然後對它們進行比較。如果要比較的至少一個對象是布爾值,則每個要比較的對象都將被轉換爲布爾值,如同應用布爾函數一樣。否則,如果在 至少有一個要比較的對象是一個數字,那麼比較每個對象 將被轉換爲數字,就好像通過應用數字 函數一樣。否則,兩個要比較的對象都將轉換爲 字符串,就像應用字符串函數一樣。當且僅當對象相等時= =比較將爲 ;當且僅當對象不相等時,!=比較將爲 爲真。根據IEEE 754 [IEEE 754],將數字比較爲 。如果兩者都爲真或者兩者都爲假,則兩個布爾值相等 。如果 和只有它們包含相同的UCS字符序列,則兩個字符串相等。

因此,由於沒有對象是布爾值,其中一個是數字,我希望JxPath嘗試將它們都轉換爲數字。 00NaN'',我測試JxPath確實將它們轉換爲number()函數。這意味着JxPath不會嘗試將它們轉換爲數字,正如規範所定義的那樣。

這是一個錯誤?

+0

'''= NaN'有效嗎? (不是很熟悉xpath的更精細的點,但似乎NaN≠0?) – BRFennPocock

回答

0

是的,如果您的信息是正確的,那麼我認爲這是一個錯誤。

+0

我在郵件列表中發佈了完全相同的問題:http://markmail.org/search/?q=fragkakis%20list%3Aorg .apache.commons.users%2F#查詢:fragkakis%20list%3Aorg.apache.commons.user +頁面:1 +中期:xdvqw254uknpuadu +狀態:結果 –