2010-12-16 20 views
2

XmlDocumentで文字列比較を実行しようとしていますが、次に試したことがあります。私はなぜ最初の2つが正しい結果をもたらし、最後の2つが結果を返さないのだろうと思っています。XmlDocumentの文字列の大、小および同等の比較

私がしようとしていたのは、日時文字列に基づいてノードをフィルタリングすることでした。最後の例のように私は持っています。

おかげで、XPath 1.0ので

XmlNodeList test = x2PathDoc.SelectNodes("//config 
              /pendingversion 
               [@versionconfigid > 1002002]"); 

XmlNodeList test2 = x2PathDoc.SelectNodes("//config 
              /pendingversion 
               [@versionconfigid >'1002002']"); 

XmlNodeList test3 = x2PathDoc.SelectNodes("//config 
              /pendingversion[@test > 'b']"); 

XmlNodeList test4 = x2PathDoc.SelectNodes("//config 
              /pendingversion 
               [@deploydatetime > 
               '2010-12-19T03:25:00-08:00']"); 
+0

これはxpathの問題です。とにかくMarianaのように、元のXMLファイルを参照する必要があります。 –

答えて

5

は、等価比較以外の比較演算子は、数値だけのために働きます。これは、XMLではUNICODEを扱っているからです。したがって、完全に順序付けされたデータ型を文字列にするためには、XPath 2.0で追加された照合という概念が必要です。

最初の式は正しくありません。なぜ第二の作品ですか? 「より大きい」演算子は、両方の引数をnumber()関数でキャストするためです。 ノードセットが ノードセットを含まない 比較の観点で定義されている関与http://www.w3.org/TR/xpath/#booleans

まず、比較から

。 =、!=、< =、<、> =および>の場合、これは一様に定義されます。

、ノードセットのexistencial比較(比較WICHのためのノードセット内のノードが存在する場合にのみ比較が真で真である)を説明した後:どちらのオブジェクトを比較する場合

をノードセットは あり、オペレータがIEEE 754

に従って番号 に両方のオブジェクトを変換し、数字を比較することによって <=<>=又は >は、次いで、オブジェクトが比較されています
+0

+1正解 –

関連する問題