【问题标题】:Two conditions using OR in XPATH在 XPATH 中使用 OR 的两个条件
【发布时间】:2012-09-15 18:27:33
【问题描述】:

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

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

此代码选择 XML 中的所有姓氏,就像 txtSearch 文本框中的文本输入一样。

这会将所有大写字母转换为小写字母。

因此,如果我正在搜索“Dorosan”,如果我输入“doro”,它会检索到正确的人,因为它将“D”翻译成“d”。但是当我输入“Doro”时,它没有检索到正确的人。

我想知道我是否可以在 XPATH 中设置两个条件,以及如何设置?我希望能够将所有大写字母翻译成小写字母,或者将所有小写字母翻译成大写字母。

【问题讨论】:

    标签: javascript xpath translate uppercase lowercase


    【解决方案1】:

    您可以在[....] 中使用or / and

    例子:

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

    有关运营商的更多信息: http://www.w3schools.com/xpath/xpath_operators.asp

    【讨论】:

      【解决方案2】:

      andor 允许在条件内:[here]。或者,您也可以使用管道符号在一个 XPath 表达式中使用多个路径。

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

      【讨论】:

      • 对于 Ms SQL Server 使用 .exist("xpath") - 它显示错误 XQuery [dvEd.EnrichmentData.exist()]: The XQuery syntax 'union' is not supported.
      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

        简单使用

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-01-05
          • 2016-04-04
          • 2013-06-14
          • 2017-06-07
          • 2020-06-15
          • 2011-08-20
          • 1970-01-01
          • 2011-07-24
          相关资源
          最近更新 更多