XSLT-код для чтения префикса и элемента пространства имен из XML - PullRequest
1 голос
/ 12 марта 2020

Я пытаюсь прочитать приведенное ниже значение элемента XML, используя код XSLT.

Ввод 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 вывод

1 Ответ

0 голосов
/ 12 марта 2020

Вы не можете использовать префикс (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">
...