- From: Henry S. Thompson <ht@inf.ed.ac.uk>
- Date: Sun, 17 Apr 2016 17:24:22 +0100
- To: Norman Walsh <ndw@nwalsh.com>
- Cc: XProc Dev <xproc-dev@w3.org>
Norman Walsh <ndw@nwalsh.com> writes:
> So.
>
> I’m working through the XInclude 1.0/1.1 test suite and I’ve discovered that
> my implementation of XInclude is … buggy.
>
> Correct behavior for XInclude is that nested XInclude elements are expanded
> before evaluating fragids. So you can say
>
> <xi:include href="book.xml" xpointer="id(chapter1)"/>
>
> and it works even if the xml:id ‘chapter1’ is “behind” an xi:include
> element in book.xml.
>
> Fair enough.
Yes, and our old stand-off markup approach to managing overlapping
markup for annotated linguistic data depends on this.
> Unfortunately, fixing that bug has a consequence. Attribute types
> defined by DTD validation are lost in the expanded document.
Why? [attribute type] is an infoset property, should be preserved in
the transcluded bit, shouldn't it?
> What this means in practice is that if you’re using DTD validation to
> assign ID types *and* using fragids to point to those IDs, it doesn’t
> work. (It does work if you name your ID attributes xml:id, which I
> hope you all do.)
I don't understand, yet. . .
> I don’t know how to fix this. It’s clear from the Saxonica API docs
> that NodeInfo.getSchemaType() doesn’t return types declared with DTD
> fragments.
Is there no getAttributeType()?
> In theory, I could use NodeInfo.getTypeAnnotation() to find
> out, but the values I get back from that API don’t have the
> IS_DTD_TYPE bit set even when the type comes from the DTD.
Do you mean, so getTypeAnnotation() _should_ work?
> (All of this despite the fact that in the parsed document, before I
> copy it, the XPath id() function does work.)
So we need to ask Michael what that's exploiting?
> I suppose I should try construct a test case and report the bug but
> that’s not going to be useful today. And even if I could get the DTD
> type, it’s entirely unclear that I could construct a new tree with
> that type, so I’m not sure it’d help.
But the DTD type should travel with the transcluded bit, shouldn't it?
> On the whole, I think the best choice is to fix the “nested includes”
> bug and just accept that DTD-based ID attribute types won’t work.
> But how painful is that going to be for users, I wonder?
In principle, quite serious. I don't know how much use that approach to
overlap is getting these days in practice.
ht
--
Henry S. Thompson, School of Informatics, University of Edinburgh
10 Crichton Street, Edinburgh EH8 9AB, SCOTLAND -- (44) 131 650-4440
Fax: (44) 131 650-4587, e-mail: ht@inf.ed.ac.uk
URL: http://www.ltg.ed.ac.uk/~ht/
[mail from me _always_ has a .sig like this -- mail without it is forged spam]
Received on Sunday, 17 April 2016 16:25:06 UTC