因此,我尝试使用 XSLT 将 SOAP 文档正文中的所有元素转换(提取)为 XML。这是我的 SOAP 文档(完整)
<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="dealercode.xsl"?>
<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:Header>
<AuthHeader xmlns="http://www.somedomain.com/">
<LogonID></LogonID>
<Password></Password>
</AuthHeader>
</soap:Header>
<soap:Body>
<getDealerCodeById xmlns="http://www.somedomain.com/">
<BrokerCode>{ssQuoterBrokerCode(app_id)}</BrokerCode>
<IDNumber>{dealerCode}</IDNumber>
</getDealerCodeById>
</soap:Body>
</soap:Envelope>
这是我的 XSLT 表。
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<?xml-stylesheet type="text/xsl" href="dealercode2soap.xsl"?>
<xsl:template match="/*">
<xsl:value-of select="soap:Body/s:getDealerCodeById"
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
xmlns:s="http://somedomainname/" />
</xsl:stylesheet>
但输出不是我想要的。它仍在解析整个 SOAP 文档,而不仅仅是给我“soap:Body”元素中的内容,而且我还收到“未解析的命名空间前缀肥皂”的警告
我哪里错了?
编辑:我设法使用不同的代码块让它工作。见下文
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns ="http://www.somedomainename.com">
<xsl:template match="/">
<xsl:apply-templates select="soap:Envelope/soap:Body/*"/>
</xsl:template>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
它现在在我的浏览器中输出正文部分的内容。我意识到的另一件最重要的事情是格式化是在服务器端完成的,但由于当时我无法访问服务器,所以我不知道我的代码是否正常工作。这是我正在寻找的所需输出(显然一直在工作。
<?xml version="1.0" encoding="UTF-8"?>
<getDealerCodeById xmlns="http:///" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<BrokerCode>{ssQuoterBrokerCode(app_id)}</BrokerCode>
<IDNumber>{dealerCode}</IDNumber>
</getDealerCodeById>