首页 > 编程 > Python > 正文

使用Python下的XSLT API进行web开发的简单教程

2020-02-23 00:45:02
字体:
来源:转载
供稿:网友

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>

XSLT 端点导入 SOAP 框架(文件 kafka/soap.xsl),然后设置该框架将要使用的参数,并设置它在处理构成 SOAP 消息的整个 XML 文档的过程中将要分派的模板。全局变量 Method 和 MethodNS 声明了组成消息的 XML 元素。在处理完 SOAP 信封之后,该框架调用 ProcessPayload 模板,该模板传入了 XML 主体的有效负载。 xsl:for-each 是将上下文切换成想要的节点的标准技巧。参数 A 和 B 是使用简单 XPaths 从这个元素读取的,而框架被再次调用以帮助写出响应参数。 WriteParameter 模板让您指定元素名称、数据类型和每个输出参数的值。本示例中的响应值是将两个输入参数相加所得的结果。

将这个端点部署为服务器相当于设置一个 HTTP 侦听器。Python 的 BaseHTTPServer 模块向您提供了所需的机制,能够轻而易举地处理该协议的 HTTP 部分。请参阅 清单 2。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表