
While yielding to no-one in my admiration for Hugh's efforts, which mean we now have a functioning implementation of it, I still have some concerns about the way the <anyElement> construct is currently implemented. The current content model for <content> is: <alternate> <anyElement include="http://relaxng.org/ns/structure/1.0" except="http://www.tei-c.org/ns/1.0 teix:egXML"/> <classRef minOccurs="0" maxOccurs="unbounded" key="model.contentPart" /> </alternate Firstly: <anyElement> is a member of the class model.contentPart, so why is it mentioned as an alternate? The answer presumably is because we want to allow a content model to contain either an element from the RNG namespace or lots of members of the pure ODD class which includes anyElement. Secondly: despite appearances, in particular, despite its name, this anyElement declaration generates RNG which matches *several* elements from the RNG namespace. To be precise it generates a pattern "TEI_anyRelax+" which is not explicitly specified anywhere in the ODD language, but (presumably) created by some cunning hocus pocus when the anyElement is processed. This make me feel uneasy: why didnt we just define a macro called anyRelax in the ODD? Thirdly: as an ODD user I am bewildered by how to interpret a combination of @include and @except attributes. Elsewhere these attributes are understood to be mutually exclusive; the @include is an exclusive inclusion. So you might suppose that an element which permits only elements from the RNG namespace cannot ipso facto also include elements from any other namespace. But in fact this is not the case: here @include means "there must be elements from this namespace", and @exclude means "there may not be elements from this namespace". The doc needs to make that a lot clearer : since it is not what these attributes mean on e.g. <moduleRef>. I also find confusing the presence of "teix:egXML" as a component of what is billed as being a list of namespaces, since whatever else it is, it aint a namespace. Howe Both the latter concerns can be addressed by a simple renaming: I suggest renaming @include as @require and @except as @exclude I am less sure what to do about the other two.