37

テキストボックス「txtSearch」があります。姓で人を検索するために使用しています。これは私のコードです。

var xmlTempResultSearch = xmlResidentListDisplay.selectNodes(
    "//PeopleList/Row[contains(translate(@LastName, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'), '" +
    txtSearch.value + "')]");

このコードは、txtSearch テキスト ボックスのテキスト入力と同様に、XML 内のすべての姓を選択します。

これにより、すべての大文字が小文字に変換されます。

したがって、「どろさん」を検索している場合、「どろ」と入力すると、「D」が「d」に変換されるため、正しい人物が検索されます。しかし、「ドロ」と入力すると、正しい人物が検索されません。

XPATH に 2 つの条件を含めることができるかどうか疑問に思っています。すべての大文字を小文字に変換したり、すべての小文字を大文字に変換したりしたいと考えています。

4

4 に答える 4

51

andor条件内で許可されます:[here]。または、パイプ記号を使用して1つのXPath式で複数のパスを使用することもできます。

//PeopleList/Row[c1] | //PeopleList/Row[c2]

于 2012-09-24T10:08:22.510 に答える
41

or/and内部で使用できます[....]

例:

//*[contains('abc') or contains('def') or text()='abcdef']

演算子の詳細: http://www.w3schools.com/xpath/xpath_operators.asp

于 2012-09-24T10:04:10.260 に答える
3

ここに「または」は必要ないと思います。どちらか一方だけを変換するのではなく、両方のオペランドを小文字に変換する必要があります。

于 2012-09-24T11:51:15.993 に答える
3

Michael Kay が指摘したように、いいえorは必要ありません。

単に使用します

PeopleList/Row
  [contains(translate(@LastName, 
                     'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 
                     'abcdefghijklmnopqrstuvwxyz'), '" 
+
           translate(txtSearch.value,
                     'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 
                     'abcdefghijklmnopqrstuvwxyz')'" 

+ "')]");
于 2012-09-24T13:14:13.493 に答える