从XML中读取前缀和名称空间元素的XSLT代码



我正在尝试使用XSLT代码读取下面的XML元素值。

输入XML:

<ns0:PrintCertificateByContractNumber xmlns:ns0="http://tempuri.org/">
<ns0:ContractNumber>123</ns0:ContractNumber>
</ns0:PrintCertificateByContractNumber>

下面的XSLT我正在尝试读取值

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
<xsl:output version="1.0" encoding="UTF-8" method="xml"/>
<xsl:template match="/">
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/">
<soapenv:Header/>
<soapenv:Body>
<tem:PrintCertificateByContractNumber>
<tem:ContractNumber>
<xsl:value-of select="ns0:PrintCertificateByContractNumber/ns0:ContractNumber"/>
</tem:ContractNumber>
</tem:PrintCertificateByContractNumber>
</soapenv:Body>
</soapenv:Envelope>
</xsl:template>
</xsl:stylesheet>

预期输出XML:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
<xsl:output version="1.0" encoding="UTF-8" method="xml"/>
<xsl:template match="/">
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/">
<soapenv:Header/>
<soapenv:Body>
<tem:PrintCertificateByContractNumber>
<tem:ContractNumber>123</tem:ContractNumber>
</tem:PrintCertificateByContractNumber>
</soapenv:Body>
</soapenv:Envelope>
</xsl:template>
</xsl:stylesheet>

请任何人帮助我使用XSLT代码来获得上面的XML输出

如果不首先将前缀(ns0(绑定到命名空间,则不能使用前缀。尝试更改:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >

至:

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns:ns0="http://tempuri.org/"
exclude-result-prefixes="ns0">

最新更新