【问题标题】:How to write a Xpath Expression comparing two attributes or nodes如何编写比较两个属性或节点的 Xpath 表达式
【发布时间】:2013-03-30 23:57:40
【问题描述】:

给出以下示例:

<?xml version="1.0" encoding="UTF-8"?>
<Patients>
  <patientRole>
    <id extension="996-756-495" root="2.16.840.1.113883.19.5"/>
    <id extension="775-756-495" root="2.16.840.1.113883.14.6"/>
    <patient>
      <name>
        <given>Henry</given>
        <family>Levin</family>
      </name>
      <administrativeGenderCode code="M" codeSystem="2.16.840.1.113883.5.1"/>
      <birthTime value="19320924"/>
    </patient>
    <providerOrganization>
      <id root="2.16.840.1.113883.19.5"/>
      <name>Good Health Clinic</name>
    </providerOrganization>
    <admissionTime value="2012030111:32"/>
  </patientRole>
  <patientRole>
    <id extension="65" root="2.16.840.1.113883.3.933"/>
    <patient>
      <name>
        <given>Paul</given>
        <family>Pappel</family>
      </name>
      <administrativeGenderCode code="M" codeSystem="2.16.840.1.113883.5.1"/>
      <birthTime value="19551217"/>
    </patient>
    <providerOrganization>
      <id extension="84756-11241-283-OPTD-3322" root="1.2.3.4.5.6.1.8.9.0"/>
      <name> Dr.med. Hans Topp-Glucklich</name>
    </providerOrganization>
    <admissionTime value="201201152200"/>
  </patientRole>
  <patientRole>
    <id extension="800001" root="2.16.840.1.113883.19.5"/>
    <patient>
      <name>
        <given>JEANNE</given>
        <family>PETIT</family>
      </name>
      <administrativeGenderCode code="F" codeSystem="2.16.840.1.113883.5.1"/>
      <birthTime value="19480105"/>
    </patient>
    <providerOrganization>
      <id root="2.16.840.1.113883.19.5"/>
      <name>Good Health Clinic</name>
    </providerOrganization>
    <admissionTime value="20120101T22:00"/>
  </patientRole>
</Patients>

我将如何为以下内容编写 X-Path 表达式:

男性患者的姓氏(性别代码="M")

非常感谢任何帮助我是 XML/Xpath 的新手,我尝试了多种方法,但它没有产生我需要的东西。

【问题讨论】:

    标签: xpath attributes xmlnode


    【解决方案1】:

    这应该可行:

    /Patients/patientRole/patient[administrativeGenderCode/@code='M']/name/family

    【讨论】:

    • 非常感谢丹尼尔。现在只是一个快速的问题,它是一个谓词正确的。 AdministrativeGenderCode 后面的 / 基本上是告诉它看下一节的代码?然后我只是 /path 进入该部分的其余部分,我将它与它进行比较或者更确切地说需要将它与它相关联?
    • @user2228233 - 是的,这是一个谓词。 administrativeGenderCode/@codeadministrativeGenderCode 元素中的 code 属性。看看w3.org/TR/2010/REC-xpath20-20101214/#id-path-expressions
    • 同样的例子我坚持如何做到这一点:2012 年 1 月“健康诊所”收治的患者人数:我能得到的最接近的是:/Patients/patientRole[providerOrganization/name= "Good Health Clinic"]/admissionTime 但它返回两个入院值不确定如何指定 2012 年 1 月
    • @user2228233 - 如果日期格式一致,你可以试试/Patients/patientRole[providerOrganization/name='Good Health Clinic' and substring(admissionTime/@value,1,6)='201201']
    • 奇怪的是它在我的查看器中工作,但是当我将它提交到站点时,我得到“不正确!XPath 表达式返回节点列表。”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-19
    • 2023-01-05
    • 2014-06-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多