javascript 在XPATH中使用OR的两个条件

mo49yndu  于 2023-02-21  发布在  Java
关注(0)|答案(4)|浏览(222)

我有一个文本框,“txtsearch”。我用它来搜索人的姓氏。这是我的代码。

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

这段代码选择XML中的所有姓氏,就像txtSearch文本框中的文本输入一样。
这会将所有大写字母转换为小写字母。
如果我搜索“Dorosan”,如果我键入“doro”,它会检索到正确的人,因为它将“D”翻译为“d”。但当我键入“Doro”时,它不会检索到正确的人。
我想知道我是否可以在XPATH中有两个条件,以及如何实现?我希望能够将所有大写转换为小写,或者将所有小写转换为大写。

wxclj1h5

wxclj1h51#

andor在条件内是允许的:[here]。或者,您也可以使用竖线符号在一个XPath表达式中使用多个路径。
//PeopleList/Row[c1] | //PeopleList/Row[c2]

uplii1fm

uplii1fm2#

可以在[....]中使用or/and
示例:

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

有关运算符的更多信息:http://www.w3schools.com/xml/xpath_operators.asp

yjghlzjz

yjghlzjz3#

我认为这里不需要“or”,只需要将两个操作数都转换成小写,而不是只转换其中一个。

hgc7kmma

hgc7kmma4#

正如Michael Kay所指出的,不需要or

只需使用

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

+ "')]");

相关问题