0

我是 xsl 的新手,我想知道如何选择字段 r1 的值

这是我的 xml(不是 100% 肥皂)


<Result>
<send>
    <x>1</x>
</send>
<received>
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
    <soapenv:Body>
        <ns1:Consult xmlns:ns1="http://www.example.org/New/">
        <message>
            <r1>2</r1>
        </message>
        </ns1:Consult>
    </soapenv:Body>
    </soapenv:Envelope>
</received>
</Result>

我试过这个

<xsl:value-of select="/Result/received/soap:Envelope/soap:Body[1]/*[namespace-uri()='http://www.example.org/New/' and local-name()='Consult'][1]/message/r1"/>

但它不起作用

4

1 回答 1

0

您需要注册 SOAP 命名空间:

<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <xsl:template match="/">
        <xsl:value-of
            select="/Result/received/soap:Envelope/soap:Body[1]/*[
                        namespace-uri()='http://www.example.org/New/' 
                        and local-name()='Consult'][1]/message/r1" />
    </xsl:template>
</xsl:stylesheet>

更好的是,同时注册它们:

<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:ns1="http://www.example.org/New/>
    <xsl:template match="/">
        <xsl:value-of
            select="/Result/received/soap:Envelope/
                        soap:Body[1]/ns1:Consult[1]/message/r1" />
    </xsl:template>
</xsl:stylesheet>
于 2012-08-30T18:45:43.103 回答