Hi all,

I would like to define an alternation of patterns of up to three attributes, where the datatype of attribute.2 and attribute.3 is uniform and depends on the value of attribute.1.

Something like the following (in *pseudo-markup*):

<rng:choice>
   <rng:group>  "pointer",       data.pointer,                      data.pointer </rng:group>
   <rng:group>  "character",   data.nonNegativeInteger, data.nonNegativeInteger </rng:group>
   <rng:group>  "byte_offset", data.nonNegativeInteger, data.nonNegativeInteger </rng:group>
   <rng:group>  "time_in_sec", data.integer,                    data.integer </rng:group>
  .... etc.
</rng:choice>

I could do that in RNG, but can I do that in ODD as well?

If I understand correctly, ODD expects me to list the three attDef declarations in an <attList> for my new class, and to declare a new data type that groups the data types that I need for attribute.2 and attribute.3, and to make the value of attribute.1 a closed list, and then to slam a huuuge piece of Schematron onto this (hopefully inside this very class definition; I haven't checked that) that would attempt to rule out unwanted sequences.

Is my diagnosis correct? I probably wouldn't mind being wrong.

I also admit to having a rather hazy idea of the extent of the difference in "staticness" between listing potential patterns in an RNG schema on the one hand, and defining them in the ODD on the other. I mean, I am not really sure if I could <alternate> a series of <sequence>s containing <attDef>s. Would I end up defining a single attribute several times? Would/Should ODD allow me to do that?

Thanks in advance,

  Piotr