我在WS
中有以下回复<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="XX" xmlns:ns2="XX">
<SOAP-ENV:Body>
<ns2:entregarManifestacaoProcessualResposta>
<ns1:sucesso>true</ns1:sucesso>
<ns1:mensagem>Some strange error messafe</ns1:mensagem>
<ns1:protocoloRecebimento>XXXXXXXX</ns1:protocoloRecebimento>
<ns1:dataOperacao>XXXXXXX</ns1:dataOperacao>
<ns1:recibo/>
</ns2:entregarManifestacaoProcessualResposta>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
根据所表达的合同,它们尚未实施,在这种情况下,成功必须为假,因为标记<ns1:recibo>
为空。
所以我需要创建一个XSLT来检查recibo
是否为空,并将sucesso
节点更改为false。
我已经开始使用下面的示例了,我在SO中找到了这个示例,但是当我尝试更改sucesso
节点时,它永远不会改变。
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="Envelope/Body/sucesso">
<sucesso>false</sucesso>
</xsl:template>
</xsl:stylesheet>
答案 0 :(得分:1)
我需要创建一个XSLT来检查
recibo
是否为空并更改sucesso
节点为false。
以这种方式尝试:
XSLT 1.0
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:ns2="XX">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>
<!-- identity transform -->
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="ns2:sucesso[not(../ns2:recibo/text())]">
<xsl:copy>false</xsl:copy>
</xsl:template>
</xsl:stylesheet>