- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 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 支持 matches() 和 lower-case() 但作为 XPath 的新手我不明白如何应用它们:
例如,如果我尝试以下操作,我会得到一个“无效的合格名称”: //my:Machines/my:Machine/[匹配(@FQDN, '(?i)machine1.mydomain.com')] //my:Machines/my:Machine/[小写(@FQDN, 'machine1.mydomain.com')]
有人可以提供一个示例 XPath,其中包括可行的命名空间处理吗?
谢谢
最佳答案
您的示例 XML 和 XPath 语句不匹配。
Machine
的子元素上使用谓词过滤器,而不是在具有 @FQDN
的 Machine
元素上使用谓词过滤器。<您可以使用以下任一方法来查找不区分大小写的值:
matches()
函数,带有不区分大小写匹配的标志:
//Machines/Machine[matches(@FQDN,'machine2.mydomain.com','i')]
upper-case()
评估大写字符串的函数:
//Machines/Machine[upper-case(@FQDN)=upper-case('machine2.mydomain.com')]
lower-case()
计算小写字符串的函数:
//Machines/Machine[lower-case(@FQDN)=lower-case('machine2.mydomain.com')]
Can someone provide a sample XPath that includes handling of Namespaces that would work?
不确定命名空间的处理是什么意思,但是如果您想匹配这些元素而不考虑它们的命名空间,那么您可以对命名空间使用通配符:
//*:Machines/*:Machine[matches(@FQDN,'machine2.mydomain.com','i')]
关于XPath 2.0 : Retrieving nodes by attribute where value is case Insensitive,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7424367/
所以我正在使用 Zend_Search_Lucene 为网站制作一个搜索引擎 我目前正在使用 Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8_Case
在 Sitecore 中,我尝试在线路管理器中创建分段列表。但是,当我选择条件时,我对“等于”、“不区分大小写等于”和“不不区分大小写等于”感到非常困惑? 谁能给我解释一下其中的区别吗? 谢谢! 最佳
我在“utf8 -- UTF-8 Unicode”中有一个模式作为字符集和“utf8_spanish_ci”的排序规则。 所有内部表都是 InnoDB,具有与上述相同的字符集和排序规则。 问题来了:
Kibana 有没有办法只为小写和大写匹配显示一次数据? 例如,假设我需要一个异常饼图,我不希望“BusinessException”和“businessexception”都被显示并被认为是不同的。
在下面的例子中, typedef CMap MapNameAndId; MapNameAndId["Dummy"] = 1; int nId = 0; if(MapNameAndId.Lookup("
似乎当我更改一个 mysql 表(在 utf-8 表/列上)唯一时,它返回重复输入错误。 例子: ALTER TABLE name ADD UNIQUE(name) 错误: Duplicate ent
我正在尝试创建一个连接到 postgresql 数据库的 TypeORM 查询构建器,以获取数据库中的所有唯一名称。我的查询看起来像这样 names = await this._context.man
我需要替换未知文本中的单词(单词的一部分)。 “替换”工作正常,但区分大小写。如何以不区分大小写的方式替换? 非常感谢! 最佳答案 您可以设置标志 i - 忽略大小写选项。引用:http://www.
我的要求是根据字符串在数据库中进行搜索。 该特定字符串可能以大写形式存储在数据库中。 所以,我将不得不通过 HQL 进行不区分大小写的搜索 我目前的 HQL 是 String query = "fro
我生成了一个可提取且不敏感的派生 key 。我想将其从 token 中导出并查看它的再见。我该怎么做? 最佳答案 您应该使用 C_GetAttributeValue() 函数读取 key 对象的 CK
这个问题已经有答案了: Cloud Firestore Case Insensitive Sorting Using Query (3 个回答) 已关闭2 年前。 基本上,我正在 Firestore
我生成了一个可提取且不敏感的派生 key 。我想将其从 token 中导出并查看它的再见。我该怎么做? 最佳答案 您应该使用 C_GetAttributeValue() 函数读取 key 对象的 CK
$('.s').keyup(function(e) { if (!/[A-Za-z0-9]/.test(String.fromCharCode(e.which))) { ret
我有这个不区分大小写的自定义选择器: jQuery.expr[':'].Contains = function(a,i,m) { var text = jQuery(a).text().toU
我知道我可以使用不区分大小写的方法,如下所示: var name = "test A/c"; {name: new RegExp('^'+name+'$', "i")} 现在我想转义上面表达式中的反斜
在 Microsoft SQL Server 中,可以指定“不区分重音”的排序规则(对于数据库、表或列),这意味着可以进行类似的查询 SELECT * FROM users WHERE name LI
我知道答案很简单,但我要发疯了。我想我已经尝试了所有可用的解决方案。我们开始吧... 我有一个字符集latin1的数据库。是的,我应该以 utf8 格式保存它,但我有几个正在运行的项目,所以我不想弄乱
抱歉,我无法从 Google 提供的任何解决方案中找到可行的解决方案(某些网站上的一些“食谱”非常接近,但太老了,我还没有找不到能给我想要的结果的东西。 我正在重命名文件,所以我有一个函数可以输出文件
我有一个 df,我想按标签删除一列,但不区分大小写。注意:我不想更改我的 df 中的任何内容,所以我想避免使用“str.lower”。 这是我的 df: print df Name Unweighte
我有这个示例代码... Result = session.QueryOver().WhereRestrictionOn(x => x.FirstName) .IsIn(ListOfFirstNames
我是一名优秀的程序员,十分优秀!