我是使用 XPath 的新手,我正在尝试通过其属性检索节点,但问题是该属性不区分大小写,这意味着我不完全知道字符串在文档中的大小写方式。
例如:
鉴于文件:
<Document xmlns:my="http://www.MyDomain.com/MySchemaInstance">
<Machines>
<Machine FQDN="machine1.mydomain.com">
<...>
</Machine>
<Machine FQDN="Machine2.MyDomain.Com">
<...>
</Machine>
</Machines>
</Document>
如果我想检索 machine1,我会使用 XPath:
//my:Machines/my:Machine/*[@FQDN='machine1.mydomain.com']
但是获取 machine2 的类似 XPath 将失败,因为大小写不匹配:
//my:Machines/my:Machine/*[@FQDN='machine2.mydomain.com'] //Fails
我看到各种帖子提到使用类似的东西(我不确定如何将命名空间应用于此):
translate(@FQDN, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz')
但即使我让它工作,考虑到我使用它的次数,它也会非常麻烦。
最后,我读到 XPath 2.0 支持 match() 和 lower-case() 但对 XPath 来说是新手,我不明白如何应用它们:
例如,如果我尝试以下操作,我会得到一个“无效的合格名称”: //my:Machines/my:Machine/ [matches(@FQDN, '(?i)machine1.mydomain.com')] //my:Machines /my:Machine/ [小写(@FQDN,'machine1.mydomain.com')]
有人可以提供一个示例 XPath,其中包括可以处理的命名空间吗?
谢谢