我正在嘗試使用 XSL 將 SOAP XML 轉換為 XML,但是我已經研究這個問題太久了,無法弄清楚我怎么會出錯。有任何想法嗎?
SOAP XML
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="https://XXX.disclosures.co.uk/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<ns1:InitiateApplicationResponse>
<InitiateApplicationResponse>
<Application>
<ApplicantReferenceNumber>580064065</ApplicantReferenceNumber>
<Forename>SEASHELLS</Forename>
<Surname>OSEAS</Surname>
<InitiateStatus>SUCCESS</InitiateStatus>
<Error />
<StatusCode>202</StatusCode>
<StatusDescription>e-Invitation Sent</StatusDescription>
<TransactionReferenceNumber>202201310003</TransactionReferenceNumber>
</Application>
</InitiateApplicationResponse>
</ns1:InitiateApplicationResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
XSL
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xsd="http://www.w3.org/2001/XMLSchema" version="1.0">
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="https://XXX.disclosures.co.uk/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<xsl:template match="ns1:InitiateApplicationResponse">
<xsl:for-each select="Application">
<EXCHANGE>
<SPD>
<SPD.SRS>
<SPD_STUC.SPD.SRS>
<xsl:value-of select="ApplicantReferenceNumber" />
</SPD_STUC.SPD.SRS>
<SPD_SEQN.SPD.SRS>CRB</SPD_SEQN.SPD.SRS>
<SPD_UDF1.SPD.SRS>
<xsl:value-of select="TransactionReferenceNumber" />
</SPD_UDF1.SPD.SRS>
</SPD.SRS>
</SPD>
</EXCHANGE>
</xsl:for-each>
</xsl:template>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
</xsl:stylesheet>
嘗試使用上述 SOAP 和 XSL 轉換為此 XML
<?xml version="1.0" encoding="UTF-8"?>
<EXCHANGE>
<SPD>
<SPD.SRS>
<SPD_STUC.SPD.SRS>580064065</SPD_STUC.SPD.SRS>
<SPD_SEQN.SPD.SRS>CRB</SPD_SEQN.SPD.SRS>
<SPD_UDF1.SPD.SRS>202201310003</SPD_UDF1.SPD.SRS>
</SPD.SRS>
</SPD>
</EXCHANGE>
uj5u.com熱心網友回復:
請嘗試以下 XSLT。
XSLT
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes" method="xml" encoding="utf-8"/>
<xsl:strip-space elements="*"/>
<xsl:template match="Application">
<EXCHANGE>
<SPD>
<SPD.SRS>
<SPD_STUC.SPD.SRS>
<xsl:value-of select="ApplicantReferenceNumber"/>
</SPD_STUC.SPD.SRS>
<SPD_SEQN.SPD.SRS>CRB</SPD_SEQN.SPD.SRS>
<SPD_UDF1.SPD.SRS>
<xsl:value-of select="TransactionReferenceNumber"/>
</SPD_UDF1.SPD.SRS>
</SPD.SRS>
</SPD>
</EXCHANGE>
</xsl:template>
</xsl:stylesheet>
輸出 XML
<?xml version='1.0' encoding='utf-8' ?>
<EXCHANGE>
<SPD>
<SPD.SRS>
<SPD_STUC.SPD.SRS>580064065</SPD_STUC.SPD.SRS>
<SPD_SEQN.SPD.SRS>CRB</SPD_SEQN.SPD.SRS>
<SPD_UDF1.SPD.SRS>202201310003</SPD_UDF1.SPD.SRS>
</SPD.SRS>
</SPD>
</EXCHANGE>
uj5u.com熱心網友回復:
如果您的訊息中還有更多內容,那么只是 SOAP-ENV:Body 并且想知道如何使用 xsl 處理名稱空間,這就是您可能需要的:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ns1="https://XXX.disclosures.co.uk/"
exclude-result-prefixes="SOAP-ENV ns1"
version="1.0"
>
<xsl:output indent="yes" method="xml" encoding="utf-8"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/">
<xsl:apply-templates select="SOAP-ENV:Envelope/SOAP-ENV:Body/ns1:InitiateApplicationResponse/InitiateApplicationResponse/Application"/>
</xsl:template>
<xsl:template match="Application">
<EXCHANGE>
<SPD>
<SPD.SRS>
<SPD_STUC.SPD.SRS>
<xsl:value-of select="ApplicantReferenceNumber" />
</SPD_STUC.SPD.SRS>
<SPD_SEQN.SPD.SRS>CRB</SPD_SEQN.SPD.SRS>
<SPD_UDF1.SPD.SRS>
<xsl:value-of select="TransactionReferenceNumber" />
</SPD_UDF1.SPD.SRS>
</SPD.SRS>
</SPD>
</EXCHANGE>
</xsl:template>
</xsl:stylesheet>
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/430757.html
