On 05/17/2018 04:18 PM, Nick Wellnhofer wrote:
> On 16/05/2018 21:51, Stefan Sauer wrote:
>> So one solution could be another flag to enable this?
>
> Yes, but it would be rather ugly.
>
>> Thanks, reading the code. Need to figure where we could cache external
>> subsets and what a suitable keys is (ExternalID ?).
>
> Note that I'm currently not planning to review and integrate larger
> patches from other developers. I only took over some libxml2
> maintenance duties because noone else did. So even if you write a
> high-quality patch, it might never get merged.
>
> Caching external subsets for XIncludes certainly sounds like a nice
> feature but I would prefer to find a simpler solution. For example,
> can't you just omit the external DTD from included documents?
I've tried this and I get some interesting differences. If I modify my
DOCTYPES declarations from e.g.:
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
               "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd";
[
  <!ENTITY % local.common.attrib "xmlns:xi  CDATA  #FIXED
'http://www.w3.org/2003/XInclude'">
  <!ENTITY % gtkdocentities SYSTEM "../xml/gtkdocentities.ent">
  %gtkdocentities;
]>

to

<!DOCTYPE refentry [
  <!ENTITY % local.common.attrib "xmlns:xi  CDATA  #FIXED
'http://www.w3.org/2003/XInclude'">
  <!ENTITY % gtkdocentities SYSTEM "../xml/gtkdocentities.ent">
  %gtkdocentities;
]>

and run (for each of the variants)
xmllint --noent --xinclude tester-docs.xml >tester-docs.nodtd.xml
then I get a lot of delta in this form:
-    <indexdiv xmlns:xi="http://www.w3.org/2003/XInclude";
id="api-index-0.1" xml:base="xml/api-index-0.1.xml">
+    <indexdiv id="api-index-0.1" xml:base="xml/api-index-0.1.xml">

basically if there is no DTD on the doctype, the resulting xi:include
nodes won't have the xmlns:xi attribute.

What is worse and puzzling me that it causes a small difference on the
html output produced my xsltproc:
-<a class="link" href="tester-GtkDocTestIf.html#FOO:CAPS"
title="FOO">FOO</a>, macro in <a class="link"
href="tester-GtkDocTestIf.html" title="GtkDocTestIf">GtkDocTestIf</a>
+<a href="tester-GtkDocTestIf.html#FOO:CAPS">FOO</a>, macro in GtkDocTestIf

if I drop the dtd, the first link misses 'class' and 'title' attributes
and the 2nd link is not linked at all.

Stefan

> You wrote:
>
>> and gtk-doc will replicate this for the fragments (replacing 'book' with
>> e.g. 'refentry'). This way one can e.g. inject things like a version.
>
> What do you mean by "inject things like a version"? Why exactly do
> your included documents have to reference an external DTD?
>
> Another idea is to stop loading external DTDs for XIncludes without an
> XPointer expression. This would still change the behavior for some
> users but it's much less likely to cause problems.
>
> Nick



_______________________________________________
xml mailing list, project page  http://xmlsoft.org/
xml@gnome.org
https://mail.gnome.org/mailman/listinfo/xml

Reply via email to