1#!/usr/bin/python -u 2import sys 3import libxml2 4# Memory debug specific 5libxml2.debugMemory(1) 6import libxslt 7 8 9styledoc = libxml2.parseDoc( 10"""<?xml version="1.0"?> 11<xsl:stylesheet version="1.0" 12 xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 13 xmlns:str="http://exslt.org/strings" 14 exclude-result-prefixes="str"> 15 16<xsl:template match="/"> 17<out>; 18 str:tokenize('2001-06-03T11:40:23', '-T:') 19 <xsl:copy-of select="str:tokenize('2001-06-03T11:40:23', '-T:')"/>; 20 21 str:tokenize('date math str') 22 <xsl:copy-of select="str:tokenize('date math str')"/>; 23</out> 24</xsl:template> 25 26</xsl:stylesheet> 27""") 28style = libxslt.parseStylesheetDoc(styledoc) 29doc = libxml2.parseDoc("<doc/>") 30result = style.applyStylesheet(doc, None) 31stringval = style.saveResultToString(result) 32style.freeStylesheet() 33doc.freeDoc() 34result.freeDoc() 35 36expect="""<?xml version="1.0"?> 37<out>; 38 str:tokenize('2001-06-03T11:40:23', '-T:') 39 <token>2001</token><token>06</token><token>03</token><token>11</token><token>40</token><token>23</token>; 40 41 str:tokenize('date math str') 42 <token>date</token><token>math</token><token>str</token>; 43</out> 44""" 45 46if stringval != expect: 47 print "Exslt processing failed" 48 sys.exit(255) 49 50# Memory debug specific 51libxslt.cleanup() 52if libxml2.debugMemory(1) == 0: 53 print "OK" 54else: 55 print "Memory leak %d bytes" % (libxml2.debugMemory(1)) 56 libxml2.dumpMemory() 57