Re: [xsl] MSXML DOCTYPE error

Subject: Re: [xsl] MSXML DOCTYPE error
From: Martin Honnen <Martin.Honnen@xxxxxx>
Date: Tue, 24 Jun 2008 16:01:57 +0200
Luke Stedman wrote:

When the dtd's are defined in the XSL file:

<!DOCTYPE xsl:stylesheet [
     <!ENTITY SYSTEM "./det_1.dtd">
     <!ENTITY SYSTEM "./det_2.dtd">
]>

The MSXML parser fails and gives the following error (The MSXML Parser
is being accessed via win32com):

File "C:\Python25\Lib\site-packages
\win32com\client\dynamic.py", line 538,
  in __setattr__ self._oleobj_.Invoke(entry.dispid, 0, invoke_type, 0, value)
    pywintypes.com_error: (-2147352567, 'Exception occurred.', (0,
u'msxml3.dll', u'The stylesheet does not contain a document element.
The stylesheet may be empty, or it may not be a well-formed XML
document.\r\n', None, 0, -2147467259), None)

When I remove the DOCTYPE section the parser loads the XSL's fine but
error's when it comes across an unreferenced entity.

The DOMDocument of MSXML has a property validateOnParse which is true by default so MSXML tries to validate against the DTD it encounters but as that is not a complete DTD for your XSLT stylesheet the validation fails and the DOMDocument for the stylesheet is not built.
So try to set
stylesheetDoc.validateOnParse = false
(that is JScript syntax, you will have to transcribe to Python) on the stylesheet DOM document, that should help I think.


--

	Martin Honnen
	http://JavaScript.FAQTs.com/

Current Thread