我是第一次使用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']
但是,如果使用相似的XPath获取machine2,将会失败,因为大小写不匹配:
//my:Machines/my:Machine/*[@FQDN='machine2.mydomain.com'] //Fails
我看到过一些帖子提到使用这样的东西(我不确定如何将命名空间应用于此):
translate(@FQDN, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz')
但是,即使我让它工作起来也会非常麻烦,考虑到我将使用它的次数。
最后,我了解到XPath 2.0支持matches()和lower-case(),但由于对XPath不熟悉,我不知道如何应用它们:
例如,如果我尝试以下内容,就会出现“无效的限定名称”: //my:Machines/my:Machine/[matches(@FQDN, '(?i)machine1.mydomain.com')] //my:Machines/my:Machine/[lower-case(@FQDN, 'machine1.mydomain.com')]
有人能提供一个包括命名空间处理的XPath示例吗?
谢谢