
Hello, I think this is mostly a question for Lou, and any other who was involved in getting PureODD together. I've started converting the MEI ODD to PureODD, so I expect to find a few issues, most of which will likely be caused by my ineptitude, so apologies in advance. Here's the first obstacle I found: In MEI the datatypes of some attributes are defined in <datatype> itself. There a few cases for this: 1. the datatype is very specific to the element and it doesn't need to be re-used. Example: <attDef ident="tab.strings" usage="opt"> <desc>Provides a *written* pitch and octave for each open string or course of strings.</desc> <datatype> <rng:list> <rng:oneOrMore> <rng:data type="token"> <rng:param name="pattern"
[a-g][0-9](s|f|ss|x|ff|xs|sx|ts|tf|n|nf|ns|su|sd|fu|fd|nu|nd|1qf|3qf|1qs|3qs)?([a-g][0-9](s|f|ss|x|ff|xs|sx|ts|tf|n|nf|ns|su|sd|fu|fd|nu|nd|1qf|3qf|1qs|3qs)?)*</rng:param> </rng:data> </rng:oneOrMore> </rng:list> </datatype> </attDef>
Solution: bite the bullet and move it to a dedicated <dataSpec> 2. The datatype combines a number of pre-defined datatypes Example: <datatype> <rng:list> <rng:oneOrMore> <rng:data type="decimal"/> <rng:data type="decimal"/> </rng:oneOrMore> </rng:list> </datatype> Solution: again create a dedicated <dataSpec>, but it's a bit annoying since this it's just a matter of combining already defined datatypes in a specific way. 3. The datatype involved a choice between a number of pre-defined datatypes Example: <datatype> <rng:choice> <rng:data type="decimal"> <rng:param name="minInclusive">1</rng:param> </rng:data> <rng:data type="time"/> </rng:choice> </datatype> Solution: like 2., but there is also another question: we're relying on the rng datatype for time. Will we have to define our own? Can we use rng's or xsd's definition without breaking the Durand Conondrum? General question: What's the reason to not allow <content> in <datatype>? It also seems a bit strange to allow either dataRef or textNode - it seems to me that it's mixing a reference and a definition, but only if it's a text node. It would seem more logical to just replace <datatype> with <dataRef> and use it to refer to a text datatype. Or, better, just allow datatype to define the datatype there and then like it used to :) Thanks, Raff