我需要使用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>
答案 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()