ODD-dev

From TEIWiki
Revision as of 23:27, 9 November 2010 by LouBurnard (talk | contribs) (Problem: Subclasses)
Jump to navigation Jump to search

This page has been set up to record underlying problems with the TEI ODD language and look at methods for improving them.


Problem: Module inter-dependency

  • Desc: In some cases elements in one TEI module (A) require that another TEI module (B) is loaded because the content models of an element in A directly requires something that is defined in B (e.g. a class or element) but no method exists indicate this module inter-dependency. This sort of dependency can, of course, happen inside a single module as well with a content model explicitly referring to a particular element which is then removed. Some concept of dependency of references needs to be implemented.
  • Suggested solutions:

This is largely mitigated by ensuring that content models reference model classes rather than explicit elements. A further prosecution of class warfare might therefore be useful.

  • Points for discussion:
    • None so far

Problem: Subclasses

  • Desc: The ability to add subclass membership to an element to, for example, grant it some extra attributes in a particular location. e.g. “I want the head inside figure to be the real <tei:head> element but have it be a member of att.mySpecialAttributes to give it some extra attributes, but only when it is inside <figure>”. This may also relate to Per-element attribute-based customisation in specific circumstances mentioned below.
  • Suggested solutions: none so far
  • Points for discussion:
  1. I (Syd) am under the impression that the problem cannot occur exactly as described. If you add attributes to the <head> element (whether directly or by adding it to the class att.mySpecialAttributes), it will not validate against tei_all, and has to be placed in another namespace. I.e., it cannot be <tei:head>.
        1. Reply: Perhaps poorly phrased in the description. How about we reverse it: let's say you want to remove @n from <figure> globally, but then allow it back when inside <figure>. Obviously you can test that with schematron, but not (I think) simply by adding <figure> to a new attribute class. James 10:23, 1 September 2009 (EDT)
  1. That said, the desire to have special attributes on <my:head> when it is a child of <figure> and not otherwise is a very reasonable one.
  2. RELAX NG permits co-occurrence constraints like this, but ODD and DTDs do not. W3C Schema 1.0 does not. Rumor has it that XSD 1.1 will, but I haven't looked carefully.
  3. As it stands it would be very reasonable to add the attributes to <my:head> in the ODD tagdoc, and then add a “don't use these attributes unless a child of <figure>” as a <constraintSpec>, i.e., in Schematron.

It seems to me that this is very much in schematron country, because of the element content/context dependency.

Problem: Per-element attribute-based customisation

  • Desc: The ability to customise the desc, valList, and other aspects of an attribute inherited from a class on a per-element basis. For example giving different suggested values for @type on an element, or a more specific description of an attribute when used on a certain element.
  • Suggested solutions: none so far
  • Points for discussion:
    • None so far


Problem: attribute/content interdependency

  • Desc: Attributes and content interdependency means that you can have either attribute or content but not both.
  • Suggested solutions: none so far
  • Points for discussion:
    • None so far


Problem: Chaining of ODDs

  • Desc: ODD should be able to be based not on the full TEI but on another ODD customisation of ODD.
  • Suggested solutions: none so far
  • Points for discussion:
    • None so far



Problem: Referencing ODD from Document Instance

  • Desc: The best place to reference an ODD in a document instance that creates the schema that the document instance is meant to validate against. Equally, whether an ODD can be embedded (or XIncluded) into a document instance. This would create a truly portable TEI document which held the document itself, and the means to create the schema and schema documentation all in a single document. This is potentially useful as an archival format.
  • Suggested solutions: none so far
  • Points for discussion:
    • None so far