1
我收到來自第三方供應商的以下XML消息。我無法控制傳入的消息。我已經將它簡化爲最簡單的形式,但仍然產生錯誤。 XML消息:使用IBM處理器用於XSLT 2.0的XML驗證/名稱空間問題
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header/>
<soap:Body/>
</soap:Envelope>
我使用XSL文件是:
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:import-schema
namespace="http://schemas.xmlsoap.org/soap/envelope/"
schema-location="http://schemas.xmlsoap.org/soap/envelope/" />
<xsl:template match="/">
<xsl:text>Help</xsl:text>
</xsl:template>
</xsl:stylesheet>
當我嘗試使用IBM處理器XSLT 2.0「啓用驗證」複選框選中運行在Eclipse中轉型,在xml驗證過程中出現以下錯誤:
cvc-elt.1.a: Cannot find the declaration of element 'soap:Envelope'
即使我無法控制傳入消息,是否有任何方法可以進行此通過驗證?如果我確實有過收到的消息控制我會做到這一點,它會奇妙的工作:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://schemas.xmlsoap.org/soap/envelope/
http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header/>
<soap:Body/>
</soap:Envelope>
我沒有IBM的XSLT 2.0處理器,但是**提供的轉換對這三個XSLT 2.0處理器正常執行:Saxon 4.6EE,AltovaXML,XQSharp(XmlPrime)。** – 2013-03-14 03:55:15