import Pyana
import string
def sum(*args):
"""Compute the sum of all arguments"""
s = 0
for i in args:
s += i
return s
# Use Pyana.Boolean to create Boolean XObjects
# The easiest may to use a Pyana.Boolean is to
# cast it into a Python integer
def xor(x,y):
return Pyana.Boolean(int(x) ^ int(y))
# Install our sum method
Pyana.installGlobalExtension('exampleNS', sum, 'sum')
# Install our xor method
Pyana.installGlobalExtension('exampleNS', xor, 'xor')
# Install the rjust method from the string module
Pyana.installGlobalExtension('exampleNS', lambda s, x: string.rjust(s, int(x)), 'rjust')
inputExampleXSL = r'''
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:py="exampleNS" version="1.0">
<xsl:output method="text"/>
<xsl:template match="/">
The value is: <xsl:value-of select="py:rjust(string(py:sum(1,2,3,4,5)), 10)"/>
The value is: <xsl:value-of select="py:rjust(string(py:xor(true(), true())), 10)"/>
The value is: <xsl:value-of select="py:rjust(string(py:xor(true(), false())), 10)"/>
</xsl:template>
</xsl:stylesheet>
'''
inputExampleXML = r'''
<ignored></ignored>
'''
print Pyana.transform2String(source=inputExampleXML, style=inputExampleXSL)
# This isn't really necessary in this example, it's just here for completeness
Pyana.removeGlobalExtension('exampleNS', 'sum')
Pyana.removeGlobalExtension('exampleNS', 'xor')
Pyana.removeGlobalExtension('exampleNS', 'rjust')
|