【发布时间】:2016-05-05 21:16:30
【问题描述】:
我有一个工作的 XML,并且正在尝试编写一个 XPath 1.0 查询来过滤/排除与某个职位的特定职位集匹配的任何职位。
这是我的 XPath:
/jobs/job[Title[not(contains(text(),'Senior') or contains(text(),'Head Of Finance') or contains(text(),'Manager'))]]
它似乎排除了带有“高级”的职位,即“高级审计”,但标题为“财务主管”的职位仍然出现 - 以下是 XML 的 sn-p:
<?xml version="1.0" encoding="utf-8" ?>
<jobs>
<job>
<JobId>3706463</JobId>
<Category><![CDATA[Health ]]></Category>
<Views>0</Views>
<Apps>0</Apps>
<Title><![CDATA[Head of Finance]]></Title>
<JobTitleFacet><![CDATA[Finance Manager ]]></JobTitleFacet>
<Hours><![CDATA[Full Time ]]></Hours>
<ExperienceLevels><![CDATA[PQ]]></ExperienceLevels>
</job>
<job>
<JobId>3706459</JobId>
<Views>0</Views>
<Apps>0</Apps>
<Title><![CDATA[Audit Senior]]></Title>
<JobTitleFacet><![CDATA[Audit ]]></JobTitleFacet>
<ExperienceLevels><![CDATA[PQ]]></ExperienceLevels>
</job>
<job>
<job>
<JobId>334</JobId>
<Views>0</Views>
<Apps>0</Apps>
<Title><![CDATA[Something Else]]></Title>
<JobTitleFacet><![CDATA[Audit ]]></JobTitleFacet>
<ExperienceLevels><![CDATA[PQ]]></ExperienceLevels>
</job>
<job>
</jobs>
我错过了什么?
【问题讨论】:
-
XSLT 和 XPath 区分大小写,因此“财务主管”(“Of”中带有大写“O”)与“财务主管”(带有小写-case "o")。
-
SMH!谢谢!作为选择的一部分,有没有办法不区分大小写?请随意回答问题,以便我将您标记为正确!
-
跟进 - 我可以将它与另一个声明结合起来吗:
/jobs/job[Title[not(contains(text(),'Senior') or contains(text(),'Head of') or contains(text(),'Manager'))]] | /jobs/job[ExperienceLevels[normalize-space()='Entry Level' or normalize-space()='PQ' or normalize-space()='NQ']] -
好吧,试一试,看看你得到了什么......(如果它没有按预期工作,请随时提出一个全新的问题。阅读起来有点困难仅在 cmets 中的代码)。谢谢!