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 "&#169;">
> >]>
> >
> ><content>
> >     <p>&copy;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

Reply via email to