Python Web 服务开发人员: 三股力量:Python、Web 服务和 XSLT
2008-09-30 13:02:15 来源:WEB开发网本专栏文章讨论了用于 Web 服务处理的主要 Python API,尽管与 Java 社区相比,Python 社区中对于开发 Web 服务的热情要低得多。增强 Python Web 服务处理功能的一个方法是利用最流行的处理 XML 的专用语言:XSLT。Python 为 XSLT 处理提供了几种很棒的工具,您可以通过挖掘这个“矿藏”来增强 Web 服务处理能力。本文将向您展示如何做到这一点。您应该熟悉 XSLT 以便理解示例。
Kafka 样式的 soap 端点
Christopher Dix 所开发的“Kafka — XSL SOAP 工具箱”(请参阅 参考资料)是一种用于构造 SOAP 端点的 XSLT 框架。它只涵盖了 SOAP 1.1,但 Kafka 端点演示了传递 UserLand SOAP 验证器(UserLand SOAP Validator)的能力,并且根据 SOAP 1.2 对它进行更新似乎并不太困难。 清单 1展示了一个样本 Kafka 端点:求两数之和的 SOAP 服务器(一个典型而简单的 SOAP 样本)。
清单 1. 求两数之和的 Kafka SOAP 端点
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:method="http://www.topxml.com/"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
>
<!-- add.xsl : Kafka SOAP Endpoint Example, with modifications -->
<!-- Import soap.xsl to use the framework -->
<xsl:import href="kafka/soap.xsl"/>
<xsl:output method="xml" encoding="utf-8" omit-xml-declaration="yes"/>
<!-- Define the global variables for the framework -->
<xsl:variable name="Method">Add</xsl:variable>
<xsl:variable name="MethodNS">http://www.topxml.com/</xsl:variable>
<!-- Add : Add two numbers and return the sum -->
<!-- Function Add( A as Double, B as Double ) as Double -->
<xsl:template name="ProcessPayload">
<xsl:param name="Payload"/>
<xsl:for-each select="$Payload">
<!-- This is how to retrieve parameters from the input -->
<xsl:variable name="A" select="number(A|method:A)"/>
<xsl:variable name="B" select="number(B|method:B)"/>
<!-- The WriteParameter template takes the qualified name
for a response parameter as well as its value and
a QName specifying the tpe (for the xsi:type attribute) -->
<xsl:call-template name="WriteParameter">
<xsl:with-param name="p" select="'Result'"/>
<xsl:with-param name="v" select="$A + $B"/>
<xsl:with-param name="t" select="'xsd:double'"/>
</xsl:call-template>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
更多精彩
赞助商链接