2011-06-21 11 views

答えて

2

これは、それぞれの子要素の1つが正確に必要な場合には、微妙なことです。次のような子を少なくとも1つは必要とします。これが私が考えることができる唯一の方法であり、あまりにもかわいいわけではありません。これは、しかし...

<!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の順序は任意ですが、それぞれ正確に1回発生する必要があります。

<!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> 
0

上記はあまり役に立ちませんが、

<!ELEMENT myxml (first|second|third)+> 
<!ELEMENT first (#PCDATA)> 
<!ELEMENT second (#PCDATA)> 
<!ELEMENT third (#PCDATA)> 
+0

'+'オカレンスインジケータを使用する場合の唯一の問題は、子要素の1つ以上を指定していることです。これは、2つの 'second'要素のようなものを持つことができることを意味します。私は、OPが各要素が存在し、一度だけ発生することを確かめたいと思う。 –

+0

すべての要素が必須であることは私には分かりませんでした。申し訳ありません。 – Carole

+0

心配はいりません。私はちょうどsayin 'だった;-) –

0

XML DTDでは、この制約を明確に指定する方法はありません。 @DevNullが示唆するようにすることができます。それは合法ですが、要素の数が多い場合は技術が扱いにくくなります。

これがSGML DTDに関するものだった場合は、& (AND) connectorを使用できました。しかし、これはXMLが作成されたときのremovedの機能の1つです。

関連する問題