Guest User

How can I return a text fragment from an XPath function?

a guest
Jul 31st, 2013
245
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.94 KB | None | 0 0
  1. from lxml import etree                              
  2.  
  3. def myFunc(context, parm):          
  4.   import lxml.html
  5.   return lxml.html.fragments_fromstring('some sample <em>text</em>')
  6.   #em = etree.Element('em')
  7.   #em.text = 'text'
  8.   #return ['some sample ', em]  
  9.  
  10. myns = etree.FunctionNamespace('http://example.org/myNamespace')
  11. myns['my-func'] = myFunc
  12.  
  13. xslt = '''
  14.    <xsl:stylesheet version="1.0"
  15.        xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  16.        xmlns:myns="http://example.org/myNamespace">
  17.      <xsl:template match="/">                                  
  18.        <xsl:variable name="result" select="myns:my-func(./*)" />
  19.        <xsl:for-each select="$result">
  20.          <xsl:copy-of select="." />
  21.        </xsl:for-each>        
  22.      </xsl:template>
  23.    </xsl:stylesheet>
  24. '''
  25.  
  26. root = etree.XML('<root></root>')
  27. doc = etree.ElementTree(root)
  28. transform = etree.XSLT(etree.XML(xslt))
  29. res = transform(doc)
  30. print(res)
Advertisement
Add Comment
Please, Sign In to add comment