On Apr 3, 2006, at 00:00, fantasai wrote:

Henri Sivonen wrote:
On Apr 2, 2006, at 18:56, fantasai wrote:
I'd rather see the id attribute restricted to an NCName token insofar as possible. We can make an exception for Hixie's repetition templates, but otherwise I think it should be compatible with the XML ID syntax.
Do you mean common attrs should have a co-occurrence constraint that changes the datatype of the id attribute if the repeat attribute is present?

Yes. Or, at the very least, if the repetition module is loaded.

Changing id in some cases to an attribute that does not have the ID nature would be problematic, but see below.

I wasn't even expecting to be able to do IDREF integrity checks in RELAX NG. I was planning on doing it in Schematron or Java. Besides, general IDREF integrity checking does not check that, for example, the form attribute references only form elements and not just any ids.

I would want that in the RelaxNG schema because there are editing tools that hook into RelaxNG, but not many (or any besides validators) that can hook into Schematron (Glazou, for example, is working on a RelaxNG- driven
editor.)

I agree that editor-friendliness is a worthy goal. I have been keeping it in mind, even though I have not actually been testing schemas in any RELAX NG-aware editor.

Schematron is not amenable to editor autocompletion features, but in *theory* it could be used for discovering errors by running the validation function over the document being edited from time to time.

RelaxNG /can/ do IDREF integrity checks.

It turns out that the ID nature in RELAX NG DTD Compatibility does *not* require the ID value to be an NCName. That is a further restriction imposed by the http://relaxng.org/ns/compatibility/ datatypes/1.0 and http://www.w3.org/2001/XMLSchema-datatypes datatype libraries. The ID nature itself only requires that that the ID value does not contain whitespace.

I spent quite a while today verifying (by implementing a more permissive ID datatype library) that James Clark's Jing agrees with my reading of the spec. It does, which is good evidence that my reading of the spec is correct. :-)

I don't know what kind of datatype library support Etna has or will have, but theoretically, it could even allow using Jing/MSV- compatible libraries via JNI. (That could actually be a worthwhile feature considering that Java API for datatype libraries is probably the most popular one.)

There is a problem, however. One of the main features of RELAX NG is that it allows ambiguous grammars: It is OK for a document to be valid according to multiple derivations. RELAX NG DTD Compatibility restricts grammar ambiguity, because the IDness of an attribute can't remain ambiguous. It appear that enabling ID/IDREF checking wreaks havoc with schemas that have not been written with this in mind.

I have not yet assessed the extent of the damage, but it could turn out that ID/IDREF checking needs to go in a separate schema like exclusions. (Does Etna support multiple schemas at a time effectively ANDing them?)

The part about form
attributes referencing only form elements can be checked by Schematron.

OK.

From an authoring standpoint, the *most* useful part of IDREF integrity checking is to check against typos, not against misinterpretation of the
idref attribute's intent. :)

OK.

--
Henri Sivonen
[EMAIL PROTECTED]
http://hsivonen.iki.fi/


Reply via email to