在XQuery中获取元素子元素

时间:2016-02-11 06:16:10

标签: xpath xquery exist-db

我需要使用XQuery获取元素子节点(我使用的是eXist-db)。

from __future__ import print_function

需要获取<component> <section classCode="DOCSECT" moodCode="EVN"> <templateId root="1.3.6.1.4.1.19376.1.5.3.1.3.4"/> <id root="2.16.840.1.113883.3.441.1.50.300011.51.26840.61" extension="a20f6b4c8538492d"/> <code code="10164-2" displayName="HISTORY OF PRESENT ILLNESS" codeSystem="2.16.840.1.113883.6.1" codeSystemName="LOINC"/> <title>History of Present Illness</title> <text mediaType="text/x-hl7-text+xml"> <table border="1"> <thead> <tr> <th>Diagnosis</th> <th>Date</th> </tr> </thead> <tbody> <tr> <td ID="ref_9f2173a9a20b4b7989001f10616bca5e_presentIllness_diagnosis_1">Abscess Of Breast Associated With Childbirth</td> <td ID="ref_9f2173a9a20b4b7989001f10616bca5e_presentIllness_date_1">03/20/2013</td> </tr> <tr> <td ID="ref_9f2173a9a20b4b7989001f10616bca5e_presentIllness_diagnosis_5">Fibrocystic Mastopathy</td> <td ID="ref_9f2173a9a20b4b7989001f10616bca5e_presentIllness_date_5">03/20/2013</td> </tr> </tbody> </table> </text> </section> </component> 代码的值。

<text>

如果我使用以下查询,则结果以<table border="1"> <thead> <tr> <th>Diagnosis</th> <th>Date</th> </tr> </thead> <tbody> <tr> <td ID="ref_9f2173a9a20b4b7989001f10616bca5e_presentIllness_diagnosis_1">Abscess Of Breast Associated With Childbirth</td> <td ID="ref_9f2173a9a20b4b7989001f10616bca5e_presentIllness_date_1">03/20/2013</td> </tr> <tr> <td ID="ref_9f2173a9a20b4b7989001f10616bca5e_presentIllness_diagnosis_5">Fibrocystic Mastopathy</td> <td ID="ref_9f2173a9a20b4b7989001f10616bca5e_presentIllness_date_5">03/20/2013</td> </tr> </tbody> </table> 标记开头。但我只需要里面的html内容。

<text>

我尝试return $section/text return $section/text/string(),但它混合了return $section/d:text/text()<tr>值。

以下是不可能的,因为有些时间<td>包含没有任何html标记的直接值。

<text>

1 个答案:

答案 0 :(得分:3)

  

&#34;如果我使用以下查询,结果将以标记开头。但我只需要里面的html内容。

     

return $section/text &#34;

而不是$section/text,您可以返回text的直接子元素,如下所示: $section/text/*

  

&#34;无法执行以下操作,因为有些时间<text>包含没有任何html标记的直接值return $section/text/d:table&#34;

在这种情况下,请将*替换为node()。后者将匹配任何类型的节点,即元素或文本节点: $section/text/node()