我带着一些复杂的XML,在其中我努力地有条件地从XML中删除某些元素。
<hl7:message xmlns:hl7="http://wso2.org/hl7"><ORU_R01 xmlns="urn:hl7-org:v2xml">
<ORU_R01.PIDPD1NK1NTEPV1PV2ORCOBRNTEOBXNTECTI>
<ORU_R01.ORCOBRNTEOBXNTECTI>
<ORU_R01.OBXNTE>
<OBX>
<OBX.1>1</OBX.1>
<OBX.16>
<XCN.1>i_tsleo</XCN.1>
</OBX.16>
</OBX>
<NTE/>
</ORU_R01.OBXNTE>
<ORU_R01.OBXNTE>
<OBX>
<OBX.1>2</OBX.1>
<OBX.2>FT</OBX.2>
<OBX.3>
<CE.3>PIT</CE.3>
</OBX.3>
</OBX>
<NTE/>
</ORU_R01.OBXNTE>
<CTI/>
</ORU_R01.ORCOBRNTEOBXNTECTI>
<ORU_R01.ORCOBRNTEOBXNTECTI>
<ORU_R01.OBXNTE>
<OBX>
<OBX.1>1</OBX.1>
<OBX.2>NM</OBX.2>
<OBX.16>
<XCN.1>i_tsleo</XCN.1>
</OBX.16>
</OBX>
<NTE/>
</ORU_R01.OBXNTE>
<ORU_R01.OBXNTE>
<OBX>
<OBX.1>9</OBX.1>
<OBX.2>FT</OBX.2>
<OBX.3>
<CE.3>PIT</CE.3>
</OBX.3>
</OBX>
</ORU_R01.OBXNTE>
<CTI/>
</ORU_R01.ORCOBRNTEOBXNTECTI>
<ORU_R01.ORCOBRNTEOBXNTECTI>
<ORU_R01.OBXNTE>
<OBX>
<OBX.1>8</OBX.1>
<OBX.2>FT</OBX.2>
<OBX.3>
<CE.3>PIT</CE.3>
</OBX.3>
</OBX>
<NTE/>
</ORU_R01.OBXNTE>
<CTI/>
</ORU_R01.ORCOBRNTEOBXNTECTI>
</ORU_R01.PIDPD1NK1NTEPV1PV2ORCOBRNTEOBXNTECTI>
<DSC/>
XML有点长。我想将包含ORU_R01.OBXNTE
的所有OBX/OBX.3/CE.3/
删除为PIT
。请注意,ORU_R01.OBXNTE
是文档中的重复元素。
我用身份转换尝试了几件事,但是没有运气。
答案 0 :(得分:2)
尝试一下: 输入XML:
<hl7:message xmlns:hl7="http://wso2.org/hl7">
<ORU_R01 xmlns="urn:hl7-org:v2xml">
<ORU_R01.PIDPD1NK1NTEPV1PV2ORCOBRNTEOBXNTECTI>
<ORU_R01.ORCOBRNTEOBXNTECTI>
<ORU_R01.OBXNTE>
<OBX>
<OBX.1>1</OBX.1>
<OBX.16>
<XCN.1>i_tsleo</XCN.1>
</OBX.16>
</OBX>
<NTE/>
</ORU_R01.OBXNTE>
<ORU_R01.OBXNTE>
<OBX>
<OBX.1>2</OBX.1>
<OBX.2>FT</OBX.2>
<OBX.3>
<CE.3>PIT</CE.3>
</OBX.3>
</OBX>
<NTE/>
</ORU_R01.OBXNTE>
<CTI/>
</ORU_R01.ORCOBRNTEOBXNTECTI>
<ORU_R01.ORCOBRNTEOBXNTECTI>
<ORU_R01.OBXNTE>
<OBX>
<OBX.1>1</OBX.1>
<OBX.2>NM</OBX.2>
<OBX.16>
<XCN.1>i_tsleo</XCN.1>
</OBX.16>
</OBX>
<NTE/>
</ORU_R01.OBXNTE>
<ORU_R01.OBXNTE>
<OBX>
<OBX.1>9</OBX.1>
<OBX.2>FT</OBX.2>
<OBX.3>
<CE.3>PIT</CE.3>
</OBX.3>
</OBX>
</ORU_R01.OBXNTE>
<CTI/>
</ORU_R01.ORCOBRNTEOBXNTECTI>
<ORU_R01.ORCOBRNTEOBXNTECTI>
<ORU_R01.OBXNTE>
<OBX>
<OBX.1>8</OBX.1>
<OBX.2>FT</OBX.2>
<OBX.3>
<CE.3>PIT</CE.3>
</OBX.3>
</OBX>
<NTE/>
</ORU_R01.OBXNTE>
<CTI/>
</ORU_R01.ORCOBRNTEOBXNTECTI>
</ORU_R01.PIDPD1NK1NTEPV1PV2ORCOBRNTEOBXNTECTI>
<DSC/>
</ORU_R01>
</hl7:message>
XSLT:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:x="urn:hl7-org:v2xml">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="x:ORU_R01.OBXNTE[.//x:CE.3 = 'PIT']"/>
</xsl:stylesheet>
输出XML:
<?xml version="1.0" encoding="utf-8"?>
<hl7:message xmlns:hl7="http://wso2.org/hl7">
<ORU_R01 xmlns="urn:hl7-org:v2xml">
<ORU_R01.PIDPD1NK1NTEPV1PV2ORCOBRNTEOBXNTECTI>
<ORU_R01.ORCOBRNTEOBXNTECTI>
<ORU_R01.OBXNTE>
<OBX>
<OBX.1>1</OBX.1>
<OBX.16>
<XCN.1>i_tsleo</XCN.1>
</OBX.16>
</OBX>
<NTE />
</ORU_R01.OBXNTE>
<CTI />
</ORU_R01.ORCOBRNTEOBXNTECTI>
<ORU_R01.ORCOBRNTEOBXNTECTI>
<ORU_R01.OBXNTE>
<OBX>
<OBX.1>1</OBX.1>
<OBX.2>NM</OBX.2>
<OBX.16>
<XCN.1>i_tsleo</XCN.1>
</OBX.16>
</OBX>
<NTE />
</ORU_R01.OBXNTE>
<CTI />
</ORU_R01.ORCOBRNTEOBXNTECTI>
<ORU_R01.ORCOBRNTEOBXNTECTI>
<CTI />
</ORU_R01.ORCOBRNTEOBXNTECTI>
</ORU_R01.PIDPD1NK1NTEPV1PV2ORCOBRNTEOBXNTECTI>
<DSC />
</ORU_R01>
</hl7:message>