我想合并,如节点:如何使用xslt将节点(使用相同名称)合并为单节点输出?
<sourcePatientInfo>PID-3|1428eab4645a4ce^^^&1.3.6.1.4.1.21367.2008.2.1&ISO</sourcePatientInfo>
<sourcePatientInfo>PID-5|WILKINS^CHARLES^^^</sourcePatientInfo>
<sourcePatientInfo>PID-8|M</sourcePatientInfo>
要这样的单个节点(不必担心节点值,我把它处理):
<sourcePatientInfo>
<patientIdentifier>
</patientIdentifier>
<patientName>
</patientName>
<patientSex></patientSex>
</sourcePatientInfo>
但他们合并与源XML名称不同的节点。现在我有这个:
<xsl:template match="sourcePatientInfo">
<sourcePatientInfo>
<xsl:choose>
<xsl:when test="matches(., 'PID-3')">
<patientIdentifier />
</xsl:when>
<xsl:when test="matches(., 'PID-5')">
<patientName />
</xsl:when>
<xsl:when test="matches(., 'PID-8')">
<patientSex />
</xsl:when>
</xsl:choose>
</sourcePatientInfo>
</xsl:template>
我排除了一些细节,以避免太多的代码。我得到的是3个单独的sourcePatientInfo
,这是不好的。
任何帮助?谢谢!!!!
我不太明白 - “PID-1”,“PID-5”是什么类型的标识符,即修复,你可以真正使用它们来匹配(就像你在你的例子中做的那样)或者你会有使用'follow-sibling'或'next()' – 2011-04-27 20:35:18
我实际上假装使用这些PID-x标识符在,或之间进行选择,即我的3个可能的子元素之一。 –
2011-04-27 20:46:50