Мне нужно игнорировать весь XML-контент, когда в одном теге ROW есть сегмент Group_2 с MATERIALSTATUS = Z7 и SALESORG = 1207.
Мой ввод xml приведен ниже.
<?xml version="1.0" encoding="UTF-8"?>
<RESULTS>
<Groups>
<Group_1>
<RESULTSET_1>
<ROW>
<MATERIAL>12345</MATERIAL>
<HARMCODE>3304.91.0000</HARMCODE>
<ARTICLETYPE>005</ARTICLETYPE>
<ARTICLESUBTYPE>014</ARTICLESUBTYPE>
<MATCATGROUP/>
<AUGROCERYPRODUCT/>
</ROW>
</RESULTSET_1>
</Group_1>
<Group_2>
<RESULTSET_1>
<ROW>
<MATERIAL>12345</MATERIAL>
<SALESORG>1119</SALESORG>
<MATERIALSTATUS>Z7</MATERIALSTATUS>
</ROW>
<ROW>
<MATERIAL>12345</MATERIAL>
<SALESORG>1207</SALESORG>
<MATERIALSTATUS>D4</MATERIALSTATUS>
</ROW>
<ROW>
<MATERIAL>12345</MATERIAL>
<SALESORG>1207</SALESORG>
<MATERIALSTATUS>Z7</MATERIALSTATUS>
</ROW>
</RESULTSET_1>
</Group_2>
</Groups>
</RESULTS>
Поскольку этот XML-файл содержит сегмент Group_2 с MATERIALSTATUS = Z7 и SALESORG = 1207 в одном (третьем) теге ROW, мой желаемый вывод должен выглядеть примерно так:
<?xml version="1.0" encoding="UTF-8"?>
<RESULTS>
<Groups/>
</RESULTS>
Мой код XSLT ниже:
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes" encoding="UTF-8"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/">
<RESULTS>
<xsl:for-each-group select="/RESULTS/Groups/*" group-by="*/ROW/MATERIAL">
<Groups>
<xsl:choose>
<xsl:when test="(../Group_2/RESULTSET_1/ROW[MATERIALSTATUS = 'Z7'])">
<xsl:choose>
<xsl:when test="(../Group_2/RESULTSET_1/ROW[SALESORG = '1207'])">
</xsl:when>
<xsl:otherwise>
<xsl:copy-of select="current-group()"/>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:otherwise>
<xsl:copy-of select="current-group()"/>
</xsl:otherwise>
</xsl:choose>
</Groups>
</xsl:for-each-group>
</RESULTS>
</xsl:template>
</xsl:stylesheet>
Этот XSL работает для заданного XML-ввода.Но когда у меня SALESORG как 1207 (в одном сегменте ROW) и MATERIALSTATUS как Z7 (в другом сегменте ROW), я не хочу, чтобы вывод подавлялся.Но мой XSL подавляет весь XML, ища 1207 во всех 3 тегах.
Пожалуйста, помогите мне понять, что я могу сделать, чтобы добиться этого?Спасибо.