【发布时间】:2014-05-08 01:47:54
【问题描述】:
我在 Mule 中有一个代理 web 服务,我在其中使用 XSLT 转换响应来修改响应......它工作正常,响应有点像:-
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<retrieveDataResponse xmlns="http://services.test.com/schema/MainData/V1">
<Response>The Data retrieved from the Database</Response>
<Id>3</Id>
<Name>anir</Name>
<Age>44</Age>
<Designation>SE</Designation>
</retrieveDataResponse>
</soap:Body>
</soap:Envelope>
现在的问题是当任何 SOAP 错误发生时说 UNMARSHAL_ERROR,响应不显示 SOAP 错误...有点像:-
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<retrieveDataResponse xmlns="http://services.test.com/schema/MainData/V1">
<Response/>
</retrieveDataResponse>
</soap:Body>
</soap:Envelope>
但它应该显示 SOAP Fault ...如果我从响应中删除 XSLT,它可以正常工作并显示带有 SOAP Fault 的响应 ...但如果我放置 XSLT再次它没有显示错误响应..如何修改我的 XSLT 以便它处理 SOAP 错误.....我的 XSLT 如下:-
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:md1="http://services.test.com/schema/MainData/V1"
exclude-result-prefixes="md1">
<xsl:template match="/">
<soap:Envelope>
<soap:Body>
<retrieveDataResponse xmlns="http://services.test.com/schema/MainData/V1">
<Response>
<xsl:value-of
select="soap:Envelope/soap:Body/md1:retrieveDataResponse/md1:Response" />
</Response>
<xsl:if
test="soap:Envelope/soap:Body/md1:retrieveDataResponse/md1:Response='The Data retrieved from the Database'">
<Id>
<xsl:value-of
select="soap:Envelope/soap:Body/md1:retrieveDataResponse/md1:Id" />
</Id>
<Name>
<xsl:value-of
select="soap:Envelope/soap:Body/md1:retrieveDataResponse/md1:Name" />
</Name>
<Age>
<xsl:value-of
select="soap:Envelope/soap:Body/md1:retrieveDataResponse/md1:Age" />
</Age>
<Designation>
<xsl:value-of
select="soap:Envelope/soap:Body/md1:retrieveDataResponse/md1:Designation" />
</Designation>
</xsl:if>
</retrieveDataResponse>
</soap:Body>
</soap:Envelope>
</xsl:template>
</xsl:stylesheet>
请帮助...如何修改我的 XSLT 以捕获 SOAP 错误
【问题讨论】:
-
您的当前 XSLT 只是使用作为响应接收的 SOAP 信封复制 RetrieveDataResponse XMl。你为什么要为此使用 XSLT?
标签: xml xslt soap xslt-1.0 mule