使用 Python XSLT API 进行 Web 服务开发

http://tech.ddvip.com   2007年03月29日    社区交流

本文详细介绍使用 Python XSLT API 进行 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>

责编:豆豆技术应用

正在加载评论...