[Lxml-checkins] r52029 - in lxml/trunk: . src/lxml/tests
scoder at codespeak.net
scoder at codespeak.net
Sun Mar 2 09:31:40 CET 2008
Author: scoder
Date: Sun Mar 2 09:31:40 2008
New Revision: 52029
Modified:
lxml/trunk/ (props changed)
lxml/trunk/src/lxml/tests/test_xslt.py
Log:
r3668 at delle: sbehnel | 2008-03-02 08:56:21 +0100
r3658 at delle: sbehnel | 2008-03-02 07:55:07 +0100
test case for apply_templates()
Modified: lxml/trunk/src/lxml/tests/test_xslt.py
==============================================================================
--- lxml/trunk/src/lxml/tests/test_xslt.py (original)
+++ lxml/trunk/src/lxml/tests/test_xslt.py Sun Mar 2 09:31:40 2008
@@ -652,6 +652,38 @@
self.assertEquals(self._rootstring(result),
'<A><y>Y</y><z/></A>')
+ def test_extension_element_apply_templates(self):
+ tree = self.parse('<a><b>B</b></a>')
+ style = self.parse('''\
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:myns="testns"
+ extension-element-prefixes="myns"
+ exclude-result-prefixes="myns">
+ <xsl:template match="a">
+ <A><myns:myext><x>X</x><y>Y</y><z/></myns:myext></A>
+ </xsl:template>
+ <xsl:template match="x" />
+ <xsl:template match="z">XYZ</xsl:template>
+</xsl:stylesheet>''')
+
+ class MyExt(etree.XSLTExtension):
+ def execute(self, context, self_node, input_node, output_parent):
+ for child in self_node:
+ for result in self.apply_templates(context, child):
+ if isinstance(result, basestring):
+ el = etree.Element("T")
+ el.text = result
+ else:
+ el = result
+ output_parent.append(el)
+
+ extensions = { ('testns', 'myext') : MyExt() }
+
+ result = tree.xslt(style, extensions=extensions)
+ self.assertEquals(self._rootstring(result),
+ '<A><T>Y</T><T>XYZ</T></A>')
+
def test_extension_element_raise(self):
tree = self.parse('<a><b>B</b></a>')
style = self.parse('''\
More information about the lxml-checkins
mailing list