On 21/02/2021 02:00, Wolfhart Totschnig wolfhart(_dot_)totschnig(_at_)mail(_dot_)udp(_dot_)cl
wrote:
I have made a couple of changes to my project in the last couple of
days. The project mainly consists in many small XML files that I
write with an XML editor but read with a web browser (Chrome). That
is, I have an XSL stylesheet that transforms these XML files into
HTML and which is executed by the browser when loading the files.
Now, one of the changes I made is to switch from a DTD to an XSD for
my XML files. And the problem is that now the browser loads the files
noticeably more slowly.
Does the XSLT *require* validation of the XML? This is usually only true
if the DTD contains entity declarations or default attribute values
which are actually used in the XML document[s].
What happens if you remove all reference to a Schema or DTD?
Concretely, I see a white screen for a fraction of a second before the
file is displayed. I am very puzzled by this. I would have thought that
switching from a DTD to an XSD would not have any effect on the
performance of the XSL processor because the processor would ignore the
associated DTD or XSD, respectively.
I would certainly expect a difference in performance or behaviour
between *loading* a document referencing a DTD and the same document
referencing an XSD, but I wouldn't expect it to be visible or even
noticeable to the user.
What then happens when the browser gets to the stage of loading and
interpreting the XSLT may depend on whether a DTD or an XSD or neither
was used in the document,
But apparently that is not the case. Hence my question: Why does
Chrome's XSL processor validate my XML files when processing them? I
don't understand why it would do that.
I think it has to, in case you have used features which only work for
valid documents, or (in the case of a DTD) make use of entity references
and potential default attribute values.
I just want the processor to execute the code, i.e., transform the
XML into HTML. Also, and more importantly, is there a way -- a line
of code that I could add to the XSL stylesheet -- that would make it
stop validating the files and hence process them faster?
Possibly, but this will break the process if the document requires
features only available in valid documents.
1) Since I made several changes to my project, I am not 100 % certain
that the drop in performance was caused by the switch from DTD to XSD.
But I think that I have excluded all other possibilities by reversing
the changes step by step. So I am 95 % certain that this is where the
problem lies.
Please test it without either DTD or XSD and let us know.
2) I could not test the issue with another web browser because Chrome is
the only browser that I can get to execute the stylesheet at all. All
other browsers that I have tried refuse to execute the stylesheet on my
local XML files, supposedly for security reasons.
Ah. Browsers do all sorts of weird things, especially with XML. One way
around this is to install Apache and serve the documents locally as
http://localhost/...
Peter
--~----------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
EasyUnsubscribe: http://lists.mulberrytech.com/unsub/xsl-list/1167547
or by email: xsl-list-unsub(_at_)lists(_dot_)mulberrytech(_dot_)com
--~--