当前位置 : 主页 > 网页制作 > xml >

xml – 不区分大小写的搜索 – xpath

来源:互联网 收集:自由互联 发布时间:2021-06-13
我正在尝试使用下面的XPath表达式对我的 XML文档进行不区分大小写的搜索.显然,我错了,因为结果不同.希望有人在这里可以指出我的错误? 我试图计算 Sect下的所有Obj元素.其中 Header价值
我正在尝试使用下面的XPath表达式对我的 XML文档进行不区分大小写的搜索.显然,我错了,因为结果不同.希望有人在这里可以指出我的错误?

我试图计算< Sect>下的所有Obj元素.其中< Header>价值是主要目标.为了获得计数,我使用下面的表达式,它很有用.

表达式 – 不区分大小写:返回31个节点.

("count(//TaggedPDF-doc//Part//Sect//Sect//Sect[contains(Header,\"Primary objectives\")]//OBJ)");

但我想让“主要目标”不区分大小写.所以,我试图使用Translate.
表达式 – 添加翻译以使“主要目标”不区分大小写.

返回0个节点.

$count = $dom->findvalue("count(//TaggedPDF-doc//Part//Sect//Sect//Sect[contains(H4,
         translate(\"Primary Objectives\", 
                   'ABCDEFGHJIKLMNOPQRSTUVWXYZ', 
                   'abcdefghjiklmnopqrstuvwxyz')
         )
]//OBJ)");

希望有人在这里可以指出我错在哪里.

提前致谢,
西马克

首先,您可能不需要所有这些//步骤//允许在任一侧命名的节点之间的任意数量级别的元素 – 使用单个/步骤枚举来自根的完整路径,或者只是使用一个//搜索整棵树.

其次,你需要将你正在比较的Header值缩减,而不是你要比较的固定字符串.尝试更像的东西

count(//Sect[
          Header[
            contains(
              translate(
                .,
                'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
                'abcdefghijklmnopqrstuvwxyz'),
              'primary objectives'
            )
          ]
        ]//Obj)

这将为您提供在Sect内任何位置发生的Obj元素的计数,该Sect包含任何包含“主要目标”的Header子项(不区分大小写).这与稍有不同

count(//Sect[contains(translate(Header, ....

在Sect包含多个Header的情况下 – 后者只检查每个Sect中的第一个Header,而不是在其中任何一个中查找匹配.

网友评论