An alternative notation of the content model could be written like this:

msIdentifier := block1, block2
block1 := sequence|msname
block2 := altIdentifier|msName*
sequence := placeName? , bloc? , country? , region? , district?,  
settlement? , offset? , geogFeat? , institution? , repository ,  
collection? , idno?

If you start with <institution>, you use the "sequence" from block1  
which also includes <idno>. This completes block1, so you must not use  
the alternative <msName> here. block2 consists of <msName> in your  
case, which is allowed to appear once or more times (unless you use  
<altIdentifier> instead). To me, my suggestion ought to be valid. I  
wonder if the validator is confused by the fact that <msName> must not  
appear in block1 if you use sequence instead, but does appear as part  
of block2 in the very same position.


Quoting Patrik Nyman <[log in to unmask]>:

> Markus Hoenicka wrote:
>> If I understand the DTD snippet correctly, the following should work:
>> <msIdentifier>
>>    <institution>Kungl. biblioteket</institution>
>>    <idno>A 148</idno>
>>    <msName>Codex Gigas</msName>
>> </msIdentifier>
>> Note the inverted order of idno and msName.
> No, this begets the same error. If I understand the
> snippet correctly you can have first _either_ zero or one of
>   <placeName>
>   <bloc>
>   <country>
>   <region>
>   <district>
>   <settlement>
>   <offset>
>   <geogFeat>
>   <institution>
>   <repository>
>   <collection>
>   <idno>
> _or_ one <msName>, except if you don't have a <msName> you must
> have a <repository>, and then zero or several <altIdentifier> and/or
> <msName>.

Markus Hoenicka
[log in to unmask]
(Spam-protected email: replace the quadrupeds with "mhoenicka")