2015-08-27 105 views
1

我不得不響應這樣轉換爲轉換非XML到XML或SOAP使用XSLT 1.0

Data received successfully to XML 

到XML或SOAP

此XML輸出

<?xml version="1.0" encoding="UTF-8"?> 
<response>Data received successfully</response> 

或SOAP

他們都會工作

<SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/"> 
    <SOAP:Header/> 
    <SOAP:Body> 
    <response>Data received successfully</response> 
</SOAP:Envelope> 

我不確定這是否可以通過XSLT完成?

任何建議都會有幫助。

+1

來自哪裏/哪裏的迴應?你如何獲得文本? –

+0

來自REST基礎的應用程序的響應。我很抱歉沒有提到這一點。 –

+1

但是迴應只是純文本?不是XML(或JSON)?如果您使用的是XSLT 2.0,則可以使用'unparsed-text()'從URL中獲取消息:http://www.w3.org/TR/2001/WD-xslt20-20011220/#function-unparsed-文字 –

回答

1

你可以在發送文本作爲參數傳遞給XSLT樣式表併產生與參數中指定的值的內容所需的XML輸出:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 

    <xsl:param name="message" select="'Data received successfully to XML'"/> 

    <xsl:template match="/"> 
    <response><xsl:value-of select="$message"/></response> 
    </xsl:template> 

</xsl:stylesheet> 

SOAP輸出:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 

    <xsl:param name="message"/> 

    <xsl:template match="/"> 
    <SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/"> 
     <SOAP:Header/> 
     <SOAP:Body> 
     <response> 
      <xsl:value-of select="$message"/> 
     </response> 
     </SOAP:Body> 
    </SOAP:Envelope> 
    </xsl:template> 

</xsl:stylesheet> 

如果您需要格式正確的XML文檔,請使用XSLT本身作爲輸入XML來調用轉換。

+0

嗨Mads,感謝您發佈代碼,但是這是消息的硬編碼消息插入。如果來自後端的響應給出不同的消息,如「數據已損壞」,但由於我們已經將消息定義爲成功,它將覆蓋失敗的消息。 –

+0

第一個示例只是將消息配置爲默認值(以幫助測試並演示值的來源)。您可以像第二個示例中那樣刪除它。如果調用XSLT並設置參數值,它將使用'message'參數中指定的值。 –

+0

感謝您的解釋。如果甚至在參數中定義了消息。我想知道是否可以根據短信動態地做到這一點。 –