Спасибо, что нашли время посмотреть на мой вопрос.
У меня есть сообщение мыльного XML, которое выглядит как -
<soap:Envelope
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<getFunctionResponse xmlns="urn:JadeWebServices/WebService/">
<getResult xsi:type="WS_getResult">
<date>August 2018</date>
<ID>100964</ID>
<MoreContent>...</MoreContent>
</getResult>
</getFunctionResponse>
</soap:Body>
</soap:Envelope>
Я пытаюсь написать XSLT, чтобы обернуть содержимое на уровне getResult. Имя тега getResult изменяется в зависимости от службы, которую я вызываю, и мне нужно делать разные вещи в зависимости от имени.
Однако это относится к типу xsi:, который не проходит проверку. Когда я удаляю атрибут xsi: type, кажется, все работает. Кажется, я не могу обойти проверку - есть ли какие-нибудь указатели?
=====================================
Изменить: на основе комментария
Вот xsl, который у меня есть
<?xml version="1.0"?>
<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:choose>
<xsl:when test="name(soap:Envelope/soap:Body/*[1]) = 'getFunctionResponse'">
<Payload>
<xsl:value-of select="soap:Envelope/soap:Body/getFunctionResponse/getResult"/>
</Payload>
<!--Do some success response related transformation-->
</xsl:when>
<xsl:otherwise>
<Error>
<xsl:value-of select="soap:Envelope/soap:Body/getErrorResponse/getResult"/>
</Error>
<!--Do some Failure response related transformation-->
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
По сути, я пытаюсь добиться другой логики преобразования, основанной на имени узла непосредственно под мылом: Body. Я мог получить 5 разных «типов» ответов, но для простоты я сократил свой XSLT, чтобы показать два сценария.
=============================================== == Редактировать: Точное сообщение об ошибке
java.lang.RuntimeException: Validation error: on line 4 column 76 of file:///c:/Users/Desktop/FULL_P~1.XML:
XTTE1515: Unknown type {WS_getResult} specified in xsi:type attribute
at com.exln.stylus.CSaxon8Driver.doProcessing(CSaxon8Driver.java:281)
at com.exln.stylus.CProcessorDriver.process(CProcessorDriver.java:104)
Full_Payload.xml (4, 76)
Validation error: on line 4 column 76 of file:///c:/Users/Desktop/FULL_P~1.XML: XTTE1515: Unknown type {WS_getResult} specified in xsi:type attribute