gpt4 book ai didi

xml - 如何在 XPath 中执行不区分大小写的搜索?

转载 作者:行者123 更新时间:2023-12-04 14:38:13 26 4
gpt4 key购买 nike

我正在尝试使用 XPath 实现不区分大小写的搜索。
我已经提到how to perform a case-insensitive attribute selector in xquery所以请在标记为重复之前检查。我正在使用 Lcase 将我的变量( L_search )转换为小写和小写函数。

我原来区分大小写的 XPath 表达式是:

XPath       =  "//*[contains(., '"& search &"')]/ancestor-or-self::*/*[local-name()='home' and @locale='en']"

我尝试了很多组合,例如:
XPath       =  "//*lower-case([contains(., '"& L_search &"')])/ancestor-or-self::*/*[local-name()='home' and @locale='en']"

XPath = "//*[contains(lower-case(.), '"& L_search &"')])/ancestor-or-self::*/*[local-name()='home' and @locale='en']"

但他们都没有产生结果。

这是我正在运行的代码:
Sub ProcessFolder(FolderPath)
On Error Resume Next
Set fldr = fso.GetFolder(FolderPath)

Set Fls = fldr.files
For Each thing in Fls
sFSpec = FSO.GetAbsolutePathName(thing)
objMSXML.async = True
objMSXML.load sFSpec
If 0 = objMSXML.parseError Then
Dim sXPath : sXPath = "//*[contains(., '"& search &"')]/ancestor-or-self::*/*[local-name()='name' and @locale='en']"

Dim querySubject : Set querySubject = objMSXML.selectSingleNode(sXPath)
Set p = document.createElement("p")
p.innerText = thing.Path
document.body.appendChild p
If querySubject Is Nothing Then
MsgBox sXPath, "failed"

最佳答案

VBScript 仅支持 XPath 1.0 而不是 XQuery,因此首先编辑您的问题标题。

在 XPath 1.0 中 translate()函数用于不区分大小写。

//*[contains(translate(., 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz') , search)]/ancestor-or-self::*/*[local-name()='home' and @locale='en']

其中搜索 = Lcase(V_SAEARCH)

它会完美地工作。无需在变量周围使用引号。

另一种写法是:-
//*[contains(translate(., 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz') , translate('" & search & "', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'))]/ancestor-or-self::*/*[local-name()='home' and @locale='en']

这里搜索变量在 XPath 中被翻译。

关于xml - 如何在 XPath 中执行不区分大小写的搜索?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36406970/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com