[ZPT] including text/xml templates inside a text/html template changes Content-Type

Clemens Robbenhaar zpt@zope.org
Wed, 29 Jan 2003 17:53:47 +0100


Hi Troy,

 > I have a pt (index_html) that is text/html.  Inside this template, I 
 > have something like this, twice:
 > 
 > <pre tal:content="here/complex_dv_doc"></pre>
 > 
 > This basically includes another template from the same folder.  In this 
 > case, complex_dv_doc is a text/xml document which is html quoted 
 > automatically (because I didn't use structure).  As those of you using 
 > IE will notice, this results in the Apache <- PCGI <- Zope monster 
 > returning my html document as Content-Type: text/xml.  Since I use 
 > Mozilla/Linux all the time, I never noticed until a user told me my site 
 > had problems :(
 > 
 > My question is this:  Is that normal?  If so, what should I do to fix it?

 I do not know of what type the XML-thingy is which You inserting there.
Is this a "File" object?
 
 Anyway, it seems this object sets the 'Content-Type' Header of the
response to 'text/xml' when rendering itself, even if it is rendered
via another object. 

 A hackish way is to change the header back (untested, sorry):

<pre tal:content="here/complex_dv_doc"></pre>
<tal:hack define="dummy python:request.RESPONSE.setHeader('Content-Type','text/html')" />

 A less hackish way would be to call some method of the XML object,
which does return the contents wothout setting the 'Content-Type'
header. If such a method exists depends on the object You querying ...

Hope this helps,
Clemens