"""The classic example.
Executes a simple transformation and prints the string result
"""
import Pyana
inputExampleXSL = r'''
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="text"/>
<xsl:template match="message">I say "<xsl:value-of select="child::text()"/>"</xsl:template>
</xsl:stylesheet>
'''
inputExampleXML = r'''
<message>Hello World!</message>
'''
class Listener:
def trace(self, event):
print 'trace'
print '\tevent:', event
print '\tevent.styleNode:', event.styleNode
print '\tevent.styleNode.uri:', event.styleNode.uri
try: print '\tevent.styleNode.text: %s' % event.styleNode.text
except AttributeError: pass
try: print '\tevent.styleNode.currentPattern: %s' % event.styleNode.currentPattern
except AttributeError: pass
def selected(self, event):
print 'selected'
print '\tevent:', event
print '\tevent.styleNode:', event.styleNode
print '\tevent.attributeName:', event.attributeName
print '\tevent.xpathExpression:', event.xpathExpression
print '\tevent.sourceNode:', event.sourceNode
def generated(self, event):
print 'generated'
print '\tevent:', event
print '\tevent.eventType:', event.eventType
print '\tevent.characters:', event.characters
print '\tevent.name:', event.name
print '\tevent.data:', event.data
print '\tevent.start:', event.start
print '\tevent.length:', event.length
t = Pyana.Transformer()
t.setTraceListener(Listener())
print t.transform2String(source=inputExampleXML, style=inputExampleXSL)
|