OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: DTD Entity



From: Richard Knapp <warped_user@yahoo.com>

>You might elaborate all the combinations:
>
><!ELEMENT Base ( First,
>                 ( Second? | Third? | Fourth?
>                   | (Second, Third) | (Third, Second)
>                   | (Third, Fourth) | (Fourth, Third)
>                   | (Second, Third, Fourth)
>                   | (Fourth, Second, Third)
>                   | (Third, Fourth, Second)
>                   | (Third, Second, Fourth)
>                   | ... you get the idea ...
>                 )
>               )

Another way to do this is to use specializing attributes:

<!ELEMENT Base ( First, Next, Next, Next, Next, Next, Next)>

If you have many Base elements, you can require them to be subclassed.
This gives you a correct number and the correct label but does not
guarantee uniqueness (must be checked another way)
<!ATTLIST Next
     type ( Second | Third | Fourth | Fifth | Sixth ) #REQUIRED >

On the other hand, if you only have one Base element, and you really need to
check uniqueness, you might try
<!ATTLIST Next
    type ID #REQUIRED >
Then the external check would be needed to make sure the IDs were spelled
correctly as "Second" etc.

In XML Schemas you might be able to get what you need using something like
<element name="Base">
    ...
    <sequence>
        <element name="First" >
        <element name="Next" abstract="true" minOccurs="5" maxOccurs="5">
    </sequence>
    ...
</element>
<element name="Second" substitutionGroup="Next">
    <attribute name="uniqueDummy" value="Second" fixed="true" />
</element>
...

and then declare some uniqueness constraint on the "uniqueDummy" attribute
scoped to the Base element. I have not tried it, so I cannot be sure.

Cheers
Rick Jelliffe