Re: Standalone document VC and WFC inconsistency

> Recent changes to the XML Conformance Tests have highlighted an
> inconsistency in the XML rec regarding standalone documents and external
> entity declarations.
>
> The conformance test changes have re-classified 3 test files from validity
> error to not-wf.  These files contain a standalone="yes" declaration, yet
> reference entities which are declared in the external DTD subset.
>
> Karl Waclawek has pointed out that this condition represents a
> well-formedness error because it falls foul of WFC: Entity Declared.
>
> I agree with Karl's interpretation, but the rec also makes this a validity
> error.  The second item in the bullet list in VC: Standalone Document
> Declaration states that a document should not reference an
> externally-declared entity from within a standalone document.
>
> I presume that the WFC should take precedence over the VC and, for clarity,
> the VC should therefore be removed.  Do you agree?

Maybe there is a slight difference.

First, a quote from the VC: Standalone Document Declaration

<quote>
The standalone document declaration must have the value "no" if any external markup declarations
contain declarations of:
  a.. entities (other than amp, lt, gt, apos, quot), if references to those entities appear in the
document, or
</quote>

Now a re-written version of the WFC: Entity Declared, which also takes the erratum
into account. (I rewrote it for my own understanding - so this reflects my personal
understanding of it, which could be wrong, of course). 

<quote>
First, I split the problem into two questions:

1) *When* should one check if a reference matches an entity declaration
    in the right location?
This is different depending on whether the reference is in the DTD
or the document content,
DTD:
  The reference is in the internal subset, and:
  a) If standalone = "yes": the reference is outside of any PE
  b) If standalone = "no" oder undefined: So far no PE has been read
     (which implies the reference is outside of any PE)
Document content:
  A) The document has no DTD
  B) The document has only an internal subset, and this subset contains no PE references
  C) standalone = "yes"

2) What should one check then?
DTD *and* document content:
  An entity declaration with matching name was read, which is in the internal subset,
  but outside of any PE (which is automatically given in case 1)-DTD-b)).
DTD:
  GE references in default attribute values must come after the matching GE declaration
</quote>

It seems, that in the WFC, if standalone="yes", but the reference is
inside a PE in the internal subset, then there is no requirement for
a matching entity declaration at all. I.e. it says nothing about
such references pointing to an external declaration.

I would say then that the VC: Standalone Document Declaration adds
some extra constraint and is not totally redundant.

But that is my personal interpretation.

Karl

Received on Tuesday, 18 June 2002 10:18:37 UTC