<?xml version="1.0" encoding="iso-8859-1"?>
<module name="Ft.Server.Server.Xslt.XmlRpcClient" file="/work/a/ports/textproc/py-4suite/work/4Suite-1.0b1/build/lib.freebsd-7.1-RELEASE-i386-2.4/Ft/Server/Server/Xslt/XmlRpcClient.py">
  <modification-date>2005-04-06 23:05:46</modification-date>
  <abstract>XSLT extensions allowing limited access to external XML-RPC servers</abstract>
  <description>Copyright 2004 Fourthought, Inc. (USA).
Detailed license and copyright information: http://4suite.org/COPYRIGHT
Project home, documentation, distributions: http://4suite.org/</description>
  <classes>
    <class name="XmlRpcInvokeElement" public="yes">
      <bases>
        <base documented="yes" class="XsltElement" module="Ft.Xml.Xslt.StylesheetTree"/>
      </bases>
      <abstract>Invoke an XML-RPC server at a remote URI (Requires Python 2.2 or above)
There are 5 attributes, p1, p2... which are used for the positional
arguments to the remote method [this will be made less kludgy soon]
Each one is an expression which follows the following conversion rules
from the XPath data model:</abstract>
      <description>    string -&gt; string
    number -&gt; floating-point number
    boolean -&gt; boolean
    node set -&gt; array of strings

You can also coerce the value to a certain type by using an attribute
of the form t1, t2,... corresponding to the pN attribute with one of the
following string values:

INT
DOUBLE
STRING
BOOLEAN

The return value is converted into an XML fragment representation,
which is sent to output.

    string -&gt; &lt;String&gt;[value]&lt;/String&gt;
    floating-point number -&gt; &lt;Double&gt;[value]&lt;/Double&gt;
    boolean -&gt; boolean &lt;Boolean&gt;[&quot;true&quot; or &quot;false&quot;]&lt;/Boolean&gt;
    array -&gt; &lt;Array&gt;[sequence of child elements as above, according to array elements]&lt;/Array&gt;

An example of an array:

    &lt;Array&gt;
      &lt;String&gt;a string&lt;/String&gt;
      &lt;Float&gt;123.4&lt;/Float&gt;
      &lt;Int&gt;1234&lt;/Int&gt;
      &lt;String&gt;another string&lt;/String&gt;
    &lt;/Array&gt;

This means that in order to access a remote method

obj.spam('eggs', 3)

On a remote server at

http://spam.com/xmlrpcserver

And save the result of XSLT variable &quot;monty&quot;,
you can use the following XSLT snippet:

&lt;xsl:variable name=&quot;monty&quot;&gt;
  &lt;futil:xml-rpc-invoke uri=&quot;http://spam.com/xmlrpcserver&quot;
                        method=&quot;obj.spam&quot;
                        p1=&quot;'eggs'&quot;
                        p2=&quot;3&quot; t2=&quot;INT&quot;/&gt;
&lt;/xsl:variable&gt;

No type coercion is used for p1 because XSLT string are generally
unambiguous in converting to XML-RPC.  However, the second param
could be integer or double, so it is coerced (default is double).

Beware that if an array is returned, you might need to use
the exslt:node-set function to convert from result tree fragment
to node set.</description>
      <method-resolution-order>
        <base name="XmlRpcInvokeElement" module="Ft.Server.Server.Xslt.XmlRpcClient"/>
        <base name="XsltElement" module="Ft.Xml.Xslt.StylesheetTree"/>
        <base name="XsltNode" module="Ft.Xml.Xslt.StylesheetTree"/>
      </method-resolution-order>
      <methods documented="yes" class="XmlRpcInvokeElement" module="Ft.Server.Server.Xslt.XmlRpcClient" inherited="no">
        <method public="yes" name="instantiate" id="XmlRpcInvokeElement-instantiate">
          <abstract/>
          <description/>
          <arguments>
            <arg name="self"/>
            <arg name="context"/>
            <arg name="processor"/>
          </arguments>
          <overrides name="XsltElement" module="Ft.Xml.Xslt.StylesheetTree"/>
        </method>
      </methods>
      <fields documented="yes" class="XmlRpcInvokeElement" module="Ft.Server.Server.Xslt.XmlRpcClient" inherited="no">
        <field public="yes" name="content" id="XmlRpcInvokeElement-content">
          <abstract>Empty is the content model for childless elements</abstract>
          <description/>
          <value>&lt;Ft.Xml.Xslt.ContentInfo.Atom instance&gt;</value>
        </field>
        <field public="yes" name="legalAttrs" id="XmlRpcInvokeElement-legalAttrs">
          <value>{'method': &lt;Ft.Xml.Xslt.AttributeInfo.StringAvt instance&gt;, 'p1': &lt;Ft.Xml.Xslt.AttributeInfo.Expression instance&gt;, 'p2': &lt;Ft.Xml.Xslt.AttributeInfo.Expression instance&gt;, 'p3': &lt;Ft.Xml.Xslt.AttributeInfo.Expression instance&gt;, 'p4': &lt;Ft.Xml.Xslt.AttributeInfo.Expression instance&gt;, 'p5': &lt;Ft.Xml.Xslt.AttributeInfo.Expression instance&gt;, 't1': &lt;Ft.Xml.Xslt.AttributeInfo.Expression instance&gt;, 't2': &lt;Ft.Xml.Xslt.AttributeInfo.Expression instance&gt;, 't3': &lt;Ft.Xml.Xslt.AttributeInfo.Expression instance&gt;, 't4': &lt;Ft.Xml.Xslt.AttributeInfo.Expression instance&gt;, ...}</value>
        </field>
      </fields>
      <methods documented="yes" class="XsltElement" module="Ft.Xml.Xslt.StylesheetTree" inherited="yes">
        <member-reference name="__init__" public="no"/>
        <member-reference name="__str__" public="no"/>
        <member-reference name="appendChild" public="yes"/>
        <member-reference name="expandQName" public="yes"/>
        <member-reference name="insertChild" public="yes"/>
        <member-reference name="parseAVT" public="yes"/>
        <member-reference name="parseExpression" public="yes"/>
        <member-reference name="parsePattern" public="yes"/>
        <member-reference name="processChildren" public="yes"/>
        <member-reference name="splitQName" public="yes"/>
      </methods>
      <fields documented="yes" class="XsltElement" module="Ft.Xml.Xslt.StylesheetTree" inherited="yes">
        <member-reference name="category" public="yes"/>
        <member-reference name="validator" public="yes"/>
      </fields>
      <methods documented="yes" class="XsltNode" module="Ft.Xml.Xslt.StylesheetTree" inherited="yes">
        <member-reference name="idle" public="yes"/>
        <member-reference name="isLastChild" public="yes"/>
        <member-reference name="isPseudoNode" public="yes"/>
        <member-reference name="pprint" public="yes"/>
        <member-reference name="prime" public="yes"/>
        <member-reference name="setup" public="yes"/>
      </methods>
      <fields documented="yes" class="XsltNode" module="Ft.Xml.Xslt.StylesheetTree" inherited="yes">
        <member-reference name="attributes" public="yes"/>
        <member-reference name="baseUri" public="yes"/>
        <member-reference name="children" public="yes"/>
        <member-reference name="columnNumber" public="yes"/>
        <member-reference name="doesIdle" public="yes"/>
        <member-reference name="doesPrime" public="yes"/>
        <member-reference name="doesSetup" public="yes"/>
        <member-reference name="expandedName" public="yes"/>
        <member-reference name="importIndex" public="yes"/>
        <member-reference name="lineNumber" public="yes"/>
        <member-reference name="nodeName" public="yes"/>
        <member-reference name="parent" public="yes"/>
        <member-reference name="root" public="yes"/>
      </fields>
    </class>
  </classes>
  <functions>
    <function public="yes" name="WriteXmlRpcResults" id="WriteXmlRpcResults">
      <abstract/>
      <description/>
      <arguments>
        <arg name="processor"/>
        <arg name="results"/>
      </arguments>
    </function>
  </functions>
  <fields>
    <field public="yes" name="CONVERTERS_FROM_XSLT" id="CONVERTERS_FROM_XSLT">
      <value>{None: None, 'BOOLEAN': &lt;function &lt;lambda&gt;&gt;, 'DOUBLE': &lt;type 'float'&gt;, 'INT': &lt;type 'int'&gt;, 'STRING': &lt;type 'str'&gt;}</value>
    </field>
    <field public="yes" name="ExtElements" id="ExtElements">
      <value>{('http://xmlns.4suite.org/4ss/util', 'xml-rpc-invoke'): &lt;class Ft.Server.Server.Xslt.XmlRpcClient.XmlRpcInvokeElement&gt;}</value>
    </field>
    <field public="yes" name="ExtFunctions" id="ExtFunctions">
      <value>{}</value>
    </field>
    <field public="yes" name="UTIL_NS" id="UTIL_NS">
      <value>'http://xmlns.4suite.org/4ss/util'</value>
    </field>
  </fields>
</module>
