Это сложно, когда вам нужен ровно один из каждого дочернего элемента.Это единственный способ, которым я могу придумать, и он не очень красивый.Хотя это работает ...
<!ELEMENT myxml (
(first,second,third)|
(first,third,second)|
(second,first,third)|
(second,third,first)|
(third,first,second)|
(third,second,first)
)>
<!ELEMENT first (#PCDATA)>
<!ELEMENT second (#PCDATA)>
<!ELEMENT third (#PCDATA)>
В основном я указываю каждую возможную комбинацию ровно одного first
, second
и third
элементов.
Вот пример примера,first
, second
и third
могут быть в любом порядке, но каждый из них должен происходить ровно один раз.
<!DOCTYPE myxml [
<!ELEMENT myxml (
(first,second,third)|
(first,third,second)|
(second,first,third)|
(second,third,first)|
(third,first,second)|
(third,second,first)
)>
<!ELEMENT first (#PCDATA)>
<!ELEMENT second (#PCDATA)>
<!ELEMENT third (#PCDATA)>
]>
<myxml>
<third></third>
<first></first>
<second></second>
</myxml>