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 に答える