我有一个SAP IDoc,如果存在ZGER
和ZFER
,我想删除一个节点,然后删除ZFER
的父节点。
源XML:
<E1WPA04 SEGMENT="1">
<KONDART>ZGER</KONDART>
<BEGINNZEIT>0000</BEGINNZEIT>
<ENDDATUM>99991231</ENDDATUM>
<ENDZEIT>0000</ENDZEIT>
</E1WPA04>
<E1WPA04 SEGMENT="1">
<KONDART>ZFER</KONDART>
<BEGINNZEIT>0000</BEGINNZEIT>
<ENDDATUM>99991231</ENDDATUM>
<ENDZEIT>0000</ENDZEIT>
</E1WPA04>
<E1WPA04 SEGMENT="1">
<KONDART>ZFAD</KONDART>
<BEGINNZEIT>0000</BEGINNZEIT>
<ENDDATUM>99991231</ENDDATUM>
<ENDZEIT>0000</ENDZEIT>
</E1WPA04>
<E1WPA04 SEGMENT="1">
<KONDART>ZCDC</KONDART>
<BEGINNZEIT>0000</BEGINNZEIT>
<ENDDATUM>99991231</ENDDATUM>
<ENDZEIT>0000</ENDZEIT>
</E1WPA04>
此处仅显示值ZGER
和ZFER
。
目标:
<E1WPA04 SEGMENT="1">
<KONDART>ZGER</KONDART>
<BEGINNZEIT>0000</BEGINNZEIT>
<ENDDATUM>99991231</ENDDATUM>
<ENDZEIT>0000</ENDZEIT>
</E1WPA04>
<E1WPA04 SEGMENT="1">
<KONDART>ZFAD</KONDART>
<BEGINNZEIT>0000</BEGINNZEIT>
<ENDDATUM>99991231</ENDDATUM>
<ENDZEIT>0000</ENDZEIT>
</E1WPA04>
<E1WPA04 SEGMENT="1">
<KONDART>ZCDC</KONDART>
<BEGINNZEIT>0000</BEGINNZEIT>
<ENDDATUM>99991231</ENDDATUM>
<ENDZEIT>0000</ENDZEIT>
</E1WPA04>
答案 0 :(得分:1)
如果您使用的是基于有选择地覆盖身份转换的典型模式,那么问题归结为如何识别要删除的项目。听起来你想删除任何同时具有
的E1WPA04
元素
KONDART
和 ZFER
E1WPA04
并且价值为KONDART
ZGER
这对应于
<xsl:template match="E1WPA04[KONDART='ZFER'][../E1WPA04/KONDART='ZGER']"/>
如果文档中有否 ZGER
,则此模板将不匹配(因此不会删除ZFER
)。