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