2012-09-24 9 views
16

私はテキストボックス 'txtSearch'を持っています。私は姓で人々を検索するためにそれを使用しています。これは私のコードです。XPATHでORを使用する2つの条件

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

このコードは、txtSearchテキストボックスに入力されたテキストのように、XMLのすべての姓を選択します。

これはすべて大文字を小文字に変換します。

「Dorosan」を検索する場合、「doro」と入力すると、「D」を「d」に翻訳したため、正しい人物が検索されます。しかし、「Doro」と入力すると、正しい人物が検索されません。

私はXPATHで2つの条件を持つことができますか?すべての大文字を小文字に変換したい、またはすべて小文字を大文字に変換できるようにしたい。

答えて

19

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

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

+1

MS SQL Serverの.exist( "XPathを")を使用して - それは、エラーのXQuery [dvEd.EnrichmentData.exist()]を示しています。XQueryの構文組合が」ではありませんサポートされます。 –

1

は、私はあなたが "または" ここで必要とは思いません。そのうちの1つだけを翻訳するのではなく、両方のオペランドを小文字に変換する必要があります。

1

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

単にを使用します。

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

+ "')]"); 
関連する問題