lxml and xslt extensions

D

dasacc22

Hi,

Im not sure where else to ask this. But basically Im having trouble
figuring out how to successfully apply multiple extensions in a single
transformation. So for example if i have
<xsl:stylesheet .../>
<xsl:template...>
<my:tag/>
<my:tag/>
</xsl:template>
</xsl:stylesheet>

in my xsl and my xslt extension looks like

class TagExtension(etree.XSLTExtension):
def execute( ..., output_parent):
print 'executing tag_extension'
tag = etree.Element('p')
tag.text = 'Hello'
output_parent.append(tag)

well then the transformation works for the first tag and appends it to
the root of the created doc but all subsequent calls dont append
(maybe b/c output_parent is now somewhere else for return?). And to
clarify, I know that its the first call that completes and all
subsequent calls fail b/c i have a subsequent call that performs a
different transformation.

Thanks for any help or hints,
Daniel
 
D

dasacc22

Hi,

Im not sure where else to ask this. But basically Im having trouble
figuring out how to successfully apply multiple extensions in a single
transformation. So for example if i have
<xsl:stylesheet .../>
<xsl:template...>
<my:tag/>
<my:tag/>
</xsl:template>
</xsl:stylesheet>

in my xsl and my xslt extension looks like

class TagExtension(etree.XSLTExtension):
  def execute( ..., output_parent):
    print 'executing tag_extension'
    tag = etree.Element('p')
    tag.text = 'Hello'
    output_parent.append(tag)

well then the transformation works for the first tag and appends it to
the root of the created doc but all subsequent calls dont append
(maybe b/c output_parent is now somewhere else for return?). And to
clarify, I know that its the first call that completes and all
subsequent calls fail b/c i have a subsequent call that performs a
different transformation.

Thanks for any help or hints,
Daniel

Oh well I found the culprit, etree.tostring seems to cut it off after
the first transformation, simply doing a

$> print result

displays the entire document. To make use of the keyword options
xml_declaration, pretty_print, encoding, I tried using the .write
method of result to a StringIO but it produces the same clipped
result. Guess Ill have to edit the .docinfo attributes on the result
and return the string
 
S

Stefan Behnel

Hi,

The best place to ask is the lxml mailing list:

http://codespeak.net/mailman/listinfo/lxml-dev

Oh well I found the culprit, etree.tostring seems to cut it off after
the first transformation,

Not sure what you mean here. Could you post your question on the lxml
mailing list and add a runnable example that shows the behaviour?

simply doing a

$> print result

displays the entire document. To make use of the keyword options
xml_declaration, pretty_print, encoding, I tried using the .write
method of result to a StringIO but it produces the same clipped
result. Guess Ill have to edit the .docinfo attributes on the result
and return the string

..docinfo is basically read-only. The result of the XSLT is serialised as
requested by the xsl:eek:utput element in the stylesheet.

Stefan
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,743
Messages
2,569,478
Members
44,898
Latest member
BlairH7607

Latest Threads

Top