Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xpath表达式帮助-多个表达式_Xpath_Expression_Element_Xmlnode - Fatal编程技术网

Xpath表达式帮助-多个表达式

Xpath表达式帮助-多个表达式,xpath,expression,element,xmlnode,Xpath,Expression,Element,Xmlnode,给出以下示例: <?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>

给出以下示例:

<?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>

亨利
莱文
健康诊所
保罗
丘疹
医学博士。汉斯·托普·格鲁克利奇
珍妮
小
健康诊所
我需要为每个表达式找到一个xpath表达式,以便执行以下操作

我是XML/Xpath新手,尝试过很多表达式,但我不能完全得到我需要的

  • 具有两个ID的患者的患者元素节点

  • 2012年1月入住“健康诊所”的患者人数:

  • 通过这一次,我尝试了
    /Patients/patientRole[providerOrganization/name='Good Health Clinic'和substring(admissionTime/@value,1,6)='201201']
    这将生成它,但我正在开发的网站将不接受该提交,因此我想知道是否有另一个表达式将生成该表达式,可能是一个不太复杂的表达式

    谢谢

    我不能完全得到我需要的东西

  • 具有两个ID的患者的患者元素节点
  • 使用

    /*/*[id[2]]/patient
    
    count(/*/*[starts-with(admissionTime/@value, '201201')]/patient)
    
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
     <xsl:output omit-xml-declaration="yes" indent="yes"/>
    
     <xsl:template match="/">
      <xsl:copy-of select="/*/*[id[2]]/patient"/>
      =====
      <xsl:value-of select=
      "count(/*/*[starts-with(admissionTime/@value, '201201')]/patient)"/>
     </xsl:template>
    </xsl:stylesheet>
    
    。 .

  • 2012年1月入住“健康诊所”的患者人数:
  • 使用

    /*/*[id[2]]/patient
    
    count(/*/*[starts-with(admissionTime/@value, '201201')]/patient)
    
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
     <xsl:output omit-xml-declaration="yes" indent="yes"/>
    
     <xsl:template match="/">
      <xsl:copy-of select="/*/*[id[2]]/patient"/>
      =====
      <xsl:value-of select=
      "count(/*/*[starts-with(admissionTime/@value, '201201')]/patient)"/>
     </xsl:template>
    </xsl:stylesheet>
    
    基于XSLT的验证

    /*/*[id[2]]/patient
    
    count(/*/*[starts-with(admissionTime/@value, '201201')]/patient)
    
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
     <xsl:output omit-xml-declaration="yes" indent="yes"/>
    
     <xsl:template match="/">
      <xsl:copy-of select="/*/*[id[2]]/patient"/>
      =====
      <xsl:value-of select=
      "count(/*/*[starts-with(admissionTime/@value, '201201')]/patient)"/>
     </xsl:template>
    </xsl:stylesheet>
    
    
    =====
    
    在提供的XML文档上应用此转换时:

    <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>
    
    <patient>
    
       <name>
    
          <given>Henry</given>
    
          <family>Levin</family>
    
       </name>
    
       <administrativeGenderCode code="M" codeSystem="2.16.840.1.113883.5.1"/>
    
       <birthTime value="19320924"/>
    
    </patient>
      =====
      2
    
    
    亨利
    莱文
    健康诊所
    保罗
    丘疹
    医学博士。汉斯·托普·格鲁克利奇
    珍妮
    小
    健康诊所
    
    计算Xpath表达式,并将计算结果复制到输出:

    <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>
    
    <patient>
    
       <name>
    
          <given>Henry</given>
    
          <family>Levin</family>
    
       </name>
    
       <administrativeGenderCode code="M" codeSystem="2.16.840.1.113883.5.1"/>
    
       <birthTime value="19320924"/>
    
    </patient>
      =====
      2
    
    
    亨利
    莱文
    =====
    2.
    
    我不能完全得到我需要的东西

  • 具有两个ID的患者的患者元素节点
  • 使用

    /*/*[id[2]]/patient
    
    count(/*/*[starts-with(admissionTime/@value, '201201')]/patient)
    
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
     <xsl:output omit-xml-declaration="yes" indent="yes"/>
    
     <xsl:template match="/">
      <xsl:copy-of select="/*/*[id[2]]/patient"/>
      =====
      <xsl:value-of select=
      "count(/*/*[starts-with(admissionTime/@value, '201201')]/patient)"/>
     </xsl:template>
    </xsl:stylesheet>
    
    。 .

  • 2012年1月入住“健康诊所”的患者人数:
  • 使用

    /*/*[id[2]]/patient
    
    count(/*/*[starts-with(admissionTime/@value, '201201')]/patient)
    
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
     <xsl:output omit-xml-declaration="yes" indent="yes"/>
    
     <xsl:template match="/">
      <xsl:copy-of select="/*/*[id[2]]/patient"/>
      =====
      <xsl:value-of select=
      "count(/*/*[starts-with(admissionTime/@value, '201201')]/patient)"/>
     </xsl:template>
    </xsl:stylesheet>
    
    基于XSLT的验证

    /*/*[id[2]]/patient
    
    count(/*/*[starts-with(admissionTime/@value, '201201')]/patient)
    
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
     <xsl:output omit-xml-declaration="yes" indent="yes"/>
    
     <xsl:template match="/">
      <xsl:copy-of select="/*/*[id[2]]/patient"/>
      =====
      <xsl:value-of select=
      "count(/*/*[starts-with(admissionTime/@value, '201201')]/patient)"/>
     </xsl:template>
    </xsl:stylesheet>
    
    
    =====
    
    在提供的XML文档上应用此转换时:

    <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>
    
    <patient>
    
       <name>
    
          <given>Henry</given>
    
          <family>Levin</family>
    
       </name>
    
       <administrativeGenderCode code="M" codeSystem="2.16.840.1.113883.5.1"/>
    
       <birthTime value="19320924"/>
    
    </patient>
      =====
      2
    
    
    亨利
    莱文
    健康诊所
    保罗
    丘疹
    医学博士。汉斯·托普·格鲁克利奇
    珍妮
    小
    健康诊所
    
    计算Xpath表达式,并将计算结果复制到输出:

    <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>
    
    <patient>
    
       <name>
    
          <given>Henry</given>
    
          <family>Levin</family>
    
       </name>
    
       <administrativeGenderCode code="M" codeSystem="2.16.840.1.113883.5.1"/>
    
       <birthTime value="19320924"/>
    
    </patient>
      =====
      2
    
    
    亨利
    莱文
    =====
    2.