如何从第三方业务服务响应消息中删除空白 xmlns 属性
How can i remove blank xmlns attribute from thirdparty business service response message
我有第三方服务。此服务的其中一个元素返回空 xmlns 值
这是业务服务响应
如您所见,IthalatBeyannameler 元素有一个空白的 xmlns="" 这就是 xslt 转换不起作用的原因。
这是我的 xslt
<xsl:template match="/">
<tns:KalemMarkaList>
<xsl:for-each select="/ns0:AntrepoCikisDigerResponse/ns0:AntrepoCikisDigerResult/ns0:IthalatBeyannameler/ns0:IthalatBeyanname">
<tns:KalemMarka>
<tns:Sasi/>
<tns:MaviRef>
<xsl:value-of select="ns0:MaviRef"/>
</tns:MaviRef>
<tns:MusteriIsNo>
<xsl:value-of select="ns0:MusteriIsNo"/>
</tns:MusteriIsNo>
<tns:Yil>
<xsl:value-of select="ns0:Yil"/>
</tns:Yil>
</tns:KalemMarka>
</xsl:for-each>
</tns:KalemMarkaList>
我该如何解决这个问题。
如果 IthalatBeyannamele
元素(及其后代)应该在命名空间 http://tempuri.org/ 中,那么您需要修复 [或说服供应商修复] 将它们放入 null 的代码命名空间。 (是否有此 API 返回的 XML 的说明,如果有,说明了什么?)
另一方面,如果元素应该在 null 命名空间中,那么您需要修复样式表以在该命名空间中处理它们。
请注意,您的问题不是命名空间(未)声明,而是元素位于错误命名空间的事实。
As you see, IthalatBeyannameler element has a blank xmlns="" thats why xslt transforming not working.
没有。您的转换不起作用,因为您忽略了它。您尝试 select:
<xsl:for-each select="/ns0:AntrepoCikisDigerResponse/ns0:AntrepoCikisDigerResult/ns0:IthalatBeyannameler/ns0:IthalatBeyanname">
你应该在什么时候做:
<xsl:for-each select="/ns0:AntrepoCikisDigerResponse/ns0:AntrepoCikisDigerResult/IthalatBeyannameler/IthalatBeyanname">
即在寻址由于无命名空间声明而位于无命名空间中的元素时删除 ns0
前缀。
出于同样的原因你需要更改:
<xsl:value-of select="ns0:MaviRef"/>
至:
<xsl:value-of select="MaviRef"/>
另外两个 xsl:value-of
指令也是如此。
我有第三方服务。此服务的其中一个元素返回空 xmlns 值
这是业务服务响应
如您所见,IthalatBeyannameler 元素有一个空白的 xmlns="" 这就是 xslt 转换不起作用的原因。
这是我的 xslt
<xsl:template match="/">
<tns:KalemMarkaList>
<xsl:for-each select="/ns0:AntrepoCikisDigerResponse/ns0:AntrepoCikisDigerResult/ns0:IthalatBeyannameler/ns0:IthalatBeyanname">
<tns:KalemMarka>
<tns:Sasi/>
<tns:MaviRef>
<xsl:value-of select="ns0:MaviRef"/>
</tns:MaviRef>
<tns:MusteriIsNo>
<xsl:value-of select="ns0:MusteriIsNo"/>
</tns:MusteriIsNo>
<tns:Yil>
<xsl:value-of select="ns0:Yil"/>
</tns:Yil>
</tns:KalemMarka>
</xsl:for-each>
</tns:KalemMarkaList>
我该如何解决这个问题。
如果 IthalatBeyannamele
元素(及其后代)应该在命名空间 http://tempuri.org/ 中,那么您需要修复 [或说服供应商修复] 将它们放入 null 的代码命名空间。 (是否有此 API 返回的 XML 的说明,如果有,说明了什么?)
另一方面,如果元素应该在 null 命名空间中,那么您需要修复样式表以在该命名空间中处理它们。
请注意,您的问题不是命名空间(未)声明,而是元素位于错误命名空间的事实。
As you see, IthalatBeyannameler element has a blank xmlns="" thats why xslt transforming not working.
没有。您的转换不起作用,因为您忽略了它。您尝试 select:
<xsl:for-each select="/ns0:AntrepoCikisDigerResponse/ns0:AntrepoCikisDigerResult/ns0:IthalatBeyannameler/ns0:IthalatBeyanname">
你应该在什么时候做:
<xsl:for-each select="/ns0:AntrepoCikisDigerResponse/ns0:AntrepoCikisDigerResult/IthalatBeyannameler/IthalatBeyanname">
即在寻址由于无命名空间声明而位于无命名空间中的元素时删除 ns0
前缀。
出于同样的原因你需要更改:
<xsl:value-of select="ns0:MaviRef"/>
至:
<xsl:value-of select="MaviRef"/>
另外两个 xsl:value-of
指令也是如此。