Разбор мыльного ответа с использованием XSLT - PullRequest
0 голосов
/ 22 февраля 2019

Я пытаюсь проанализировать ответ SOAP с помощью XSLT и получаю сообщение об ошибке.Я новичок в XSLT.

Unable to generate the XML document using the provided XML/XSL input. Errors were reported during stylesheet compilation

Ответ XML

<?xml version="1.0" encoding="UTF-8"/>
  <S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
    <S:Body>
       <ns0:response xmlns:ns0="http://ws.ejb.interfaces70.abc.aspace.com/">
         <return>
            <check>
              <code>code_value</code>
             </check>
          </return>
        </ns0:primaryAuthenticateUPResponse>
      </S:Body>
    </S:Envelope>

XSLT

  <?xml version="1.0" ?>
  <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:S="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns0="http://ws.ejb.interfaces70.abc.aspace.com/">
    <xsl:template match="/">
      <b><xsl:value-of select="S:Envelope/S:Body/ns0:response/return/check/code/" /></b>
    </xsl:template>
  </xsl:stylesheet>

Ответы [ 2 ]

0 голосов
/ 22 февраля 2019

Предположим, ваш XML после исправления:

<?xml version="1.0" encoding="UTF-8"?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
   <ns0:response xmlns:ns0="http://ws.ejb.interfaces70.abc.aspace.com/">
     <return>
        <check>
          <code>code_value</code>
         </check>
      </return>
    </ns0:response>
  </S:Body>
</S:Envelope>

И исправлено xslt:

<?xml version="1.0" ?>
<xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
  xmlns:S="http://schemas.xmlsoap.org/soap/envelope/" 
  xmlns:ns0="http://ws.ejb.interfaces70.abc.aspace.com/">

  <xsl:output omit-xml-declaration="yes" indent="yes"/>
    <xsl:template match="/">
      <b><xsl:value-of select="S:Envelope/S:Body/ns0:response/return/check/code" /></b>
    </xsl:template>
  </xsl:stylesheet>
0 голосов
/ 22 февраля 2019

Попробуйте удалить последние / in:

<xsl:value-of select="S:Envelope/S:Body/ns0:response/return/check/code/" />

, чтобы они стали:

<xsl:value-of select="S:Envelope/S:Body/ns0:response/return/check/code" />

Не проверено, поскольку ваш XML непригоден для использования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...