У меня есть требование, когда я получаю SOAP-ответ в datapower, который я преобразовываю в JSONX, так как ответ очень большой, я удаляю все нулевые элементы, используя приведенный ниже код. Но здесь мне не нужно удалять некоторые элементы, даже еслихотя я получаю ноль от поддержки. Может ли кто-нибудь помочь, пожалуйста.
<xsl:apply-templates mode="removenullfields" select="$response"/>
<xsl:template mode="removenullfields" match="node()|@*">
<xsl:copy>
<xsl:apply-templates mode="removenullfields" select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template mode="removenullfields" match="*[not(normalize-space())]"/>
<xsl:template mode="removenullfields" match="*[not(self::elementname)][not(@*|*|comment()|processing-instruction()) and normalize-space()='']"/>
Ниже приведен пример XML-ответа, который я получаю от серверной части, при преобразовании в JSON, я хотел бы удалить все пустые элементы и объекты, которые поступают изЯ хотел бы отправить только эти элементы (утверждение, координатор-заголовок, createUser-userId), даже если он пуст из бэкэнда с использованием универсальной логики, поскольку мой xslt очень большой. Не могли бы вы помочь мне здесь.
<soap:Envelope>
<soap:Body>
<Response>
<Disp>
<agency/>
<allegation>Test</allegation>
<test>
<firstName>Test</firstName>
<lastName>Test</lastName>
<type>Test</type>
</test>
<coordinator>
<userId></userId>
<title>Test</title>
<email></email>
</coordinator>
<Date>Test</Date>
<User>
<Id></Id>
<clientName>0</clientName>
</User>
</Disp>
</Response>
</soap:Body>
</soap:Envelope>
Я попробовал приведенную ниже логику в преобразовании json в мыло. Он работает, даже когда я передаю пустое значение в поле утверждения в запросе. Та же логика не работает для преобразования SOAP в JSON
<xsl:template mode="removenullfields" match="*[not(self::allegation)][not(@*|*|comment()|processing-instruction()) and normalize-space()='']"/>