Я пытаюсь написать xslt
для изменения xml
. Это ответ, полученный синхронным вызовом. Эта структура xml должна быть изменена, и данные должны быть переданы, чтобы отклик мог быть использован исходной системой.Невозможно извлечь элементы с использованием Xslt
Входной XML, как показано ниже:
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope">
<SOAP-ENV:Body>
<ns0:ValidateMeterItemResponse xmlns:ns0="http://www.apsc.com/CCB/ValidateMeterItem/InOut">
<ns1:ValidateMeterItemRes xmlns:ns1="http://www.apsc.com/CCB/MeterServices/InOut">
<ns1:verificationStatus>M2IV</ns1:verificationStatus>
<ns1:errorCode>256.0</ns1:errorCode>
<ns1:errorText>Service Point ID 1245765566 field invalid</ns1:errorText>
<ns1:readingDetails/>
</ns1:ValidateMeterItemRes>
</ns0:ValidateMeterItemResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Ожидаемый результат XML является:
<responseMessage/">
<response>
<errorCode>256.0</errorCode>
</response>
</responseMessage>
Я пытаюсь просто извлечь только один узел на данный момент.
Ниже приведен XSLT, который я написал. Сначала я скопировал все элементы as-is, а затем попытался покончить с узлом <ValidateMeterItemResponse>
. Затем я пытаюсь создать свой xml (с другой структурой), выбирая определенные элементы из входного xml с помощью xsl value of
.
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns0="http://xmlns.oracle.com/OUMWM/Message"
xmlns:ns1="http://xmlns.oracle.com/OUMWM/Message1">
<xsl:output method="xml" indent="yes" omit-xml-declaration="yes" />
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()" />
</xsl:copy>
</xsl:template>
<xsl:template match="/*/*/*">
<xsl:apply-templates select="node()" />
</xsl:template>
<xsl:strip-space elements="*"/>
<xsl:template match="/*">
<responseMessage>
<response>
<errorCode>
<xsl:value-of select="SOAP-ENV:Envelope/SOAP-ENV:Body/ns1:ValidateMeterItemRes/ns1:errorCode" />
</errorCode>
</response>
</responseMessage>
</xsl:template>
</xsl:stylesheet>
Я не могу извлечь элемент даже после того, как все пути правильные. Я уверен, что пропустил что-то, пытаясь добиться этого. Где я неправ?
Привет Тим, Большое спасибо. !! Ценю вашу помощь!! это сработало! –