我有一个输入xml,其中S:Fault xmlns:ns4 =" http://www.w3.org/2003/05/soap-envelope"这给从错误节点获取数据带来了麻烦。
<?xml version="1.0" encoding="UTF-8"?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<S:Fault xmlns:ns4="http://www.w3.org/2003/05/soap-envelope">
<faultcode>S:Server</faultcode>
<faultstring>The GTIN is not valid or the system can not map the Company Prefix to an existing Company Prefix from the Setting</faultstring>
</S:Fault>
</S:Body>
</S:Envelope>
Xlst代码无效...
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ns0="example" xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ns4="http://www.w3.org/2003/05/soap-envelope"
exclude-result-prefixes="S ns4">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/S:Envelope">
<ns0:MT_CreateSerialNumberResponse_IB xmlns:ns0="example">
<serialNumberList xmlns="urn:abcd:1">
<body>
<message>
<xsl:value-of select="S:Body/ns4:Fault/ns4:faultstring"/>
</message>
</body>
</serialNumberList>
</ns0:MT_CreateSerialNumberResponse_IB>
</xsl:template>
</xsl:stylesheet>
预期结果...如果我错过了某些内容,请帮助查找代码错误
<ns0:MT_CreateSerialNumberResponse_IB xmlns:ns0="example">
<serialNumberList xmlns="urn:abcd:1">
<body><message>The GTIN is not valid or the system can not map the Company Prefix to an existing Company Prefix from the Setting</message>
</body>
</serialNumberList>
</ns0:MT_CreateSerialNumberResponse_IB>
答案 0 :(得分:1)
试试这个
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ns0="example" xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ns4="http://www.w3.org/2003/05/soap-envelope"
exclude-result-prefixes="S ns4">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/S:Envelope">
<ns0:MT_CreateSerialNumberResponse_IB xmlns:ns0="example">
<serialNumberList xmlns="urn:abcd:1">
<body>
<message>
<xsl:value-of select="S:Body/S:Fault/faultstring"/>
</message>
</body>
</serialNumberList>
</ns0:MT_CreateSerialNumberResponse_IB>
</xsl:template>
</xsl:stylesheet>
答案 1 :(得分:1)
输入XML中没有名称以Start()
为前缀的节点。这使得名称空间声明ns4:
完全冗余(在XML和XSLT中)。
仅继承默认名称空间声明(不带前缀)。 xmlns:ns4="http://www.w3.org/2003/05/soap-envelope"
元素在作用域中没有前缀,也没有默认的名称空间声明。这意味着它处于无命名空间,并且它的路径(来自faultstring
的上下文)是:
S:Envelope