我正在評估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嘗試將它們都轉換爲數字。 0
爲0
和NaN
爲''
,我測試JxPath確實將它們轉換爲number()
函數。這意味着JxPath不會嘗試將它們轉換爲數字,正如規範所定義的那樣。
這是一個錯誤?
'''= NaN'有效嗎? (不是很熟悉xpath的更精細的點,但似乎NaN≠0?) – BRFennPocock