Stephane, thank you very much!!!
That has solved my problem, I was not even aware of the readFile method - I had been copying examples that all used parseFile. Fixed :-) Cheers Mike >From: "Bidoul, Stephane" <[EMAIL PROTECTED]> >To: "Mike Kneller" <[EMAIL PROTECTED]>, <[email protected]> >Date: January 29, 2007 07:00:26 AM PST >Subject: RE: [xml] Fwd: continued problem with Python, libxml2 and entities > >Mike, > >You should tell libxml2 to resolve entities before doing any XSLT >processing. In your test.py, use > >sourcedoc = libxml2.readFile( 'test.xml', None, libxml2.XML_PARSE_NOENT >) > >If you look at pyxsltproc.py you will see that it does the same trick >with a global setting ( libxml2.substituteEntitiesDefault(1) ) but I >believe this way of doing is deprecated. > >-sbi > >> -----Original Message----- >> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On >> Behalf Of Mike Kneller >> Sent: lundi 29 janvier 2007 15:29 >> To: [email protected] >> Subject: [xml] Fwd: continued problem with Python, libxml2 >> and entities >> >> It turns out that the same transform run through xsltproc >> gives the correct result. >> >> What I am expecting to see is: >> <?xml version="1.0"?> >> <content> >> <p>(c)2007</p> >> </content> >> >> When I run it using test.py, the result I get is: >> <?xml version="1.0"?> >> <content> >> <p>2007</p> >> </content> >> >> So, as the xsltproc version gives me the correct result, I >> guess I can eliminate the library as the source of the >> problem, instead it would appear to be a problem with my >> Python code, or the Python wrapper. >> >> Any ideas? >> >> Mike >> >> >> >From: "Mike Kneller" <[EMAIL PROTECTED]> >> >To: <[email protected]> >> >Date: January 28, 2007 09:26:40 AM PST >> >Subject: [xml] continued problem with Python, libxml2 and entities >> > >> >The continuing saga! >> > >> >I seem to have moved the entity issue from libxml2 to libxslt... >> > >> >Using the following testcase (using a standard identity >> >transformation) now loses the entity. >> > >> >replacing <xsl:copy> with <xsl:copy-of> on the <p> node >> produces output >> >with the entity, as does using <xsl:value-of> on the same node. >> > >> >===test.py=== >> >import libxml2 >> >import libxslt >> > >> >sourcedoc = libxml2.parseFile( 'test.xml' ) styledoc = >> >libxml2.parseFile( 'test.xsl' ) style = >> >libxslt.parseStylesheetDoc(styledoc) >> >result = style.applyStylesheet(sourcedoc, None) print >> >style.saveResultToString( result ) >> >style.freeStylesheet() >> >result.freeDoc() >> >sourcedoc.freeDoc() >> > >> > >> >===test.xml=== >> ><?xml version="1.0"?> >> ><?xml-stylesheet type="text/xsl" href="test.xsl" ?> >> > >> ><!DOCTYPE content [ >> > <!ENTITY copy "©"> >> >]> >> > >> ><content> >> > <p>©2007</p> >> ></content> >> > >> > >> >===test.xsl=== >> ><?xml version="1.0"?> >> ><xsl:stylesheet version="1.0" >> > xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >> > > >> > >> ><xsl:template match="/"> >> > <xsl:apply-templates match="." /> >> ></xsl:template> >> > >> ><xsl:template match="@*|node()"> >> > <xsl:copy> >> > <xsl:apply-templates select="@*|node()"/> >> > </xsl:copy> >> ></xsl:template> >> > >> ></xsl:stylesheet> >> > >> > >> >Cheers >> >Mike Kneller >> >[EMAIL PROTECTED] >> >http://www.mikekneller.com >> > >> >_______________________________________________ >> >xml mailing list, project page http://xmlsoft.org/ [email protected] >> >http://mail.gnome.org/mailman/listinfo/xml >> > >> > >> _______________________________________________ >> xml mailing list, project page http://xmlsoft.org/ >> [email protected] http://mail.gnome.org/mailman/listinfo/xml >> > > _______________________________________________ xml mailing list, project page http://xmlsoft.org/ [email protected] http://mail.gnome.org/mailman/listinfo/xml
