我正在使用RELAX NG開發一個模式。我對此很新,所以很可能忽視了一些顯而易見的事情,但似乎沒有一種方便的方式來指定XML模式語言中元素的出現次數。如何在RELAX NG中指定出現的數字範圍?
例如,假設我想指定A
元素可能包含2 - 5個B
元素。我不想使用3210或oneOrMore
標籤,因爲我實際上對元素數量有上限。在XML Schema中,我可以使用minOccurs
和maxOccurs
屬性來緊湊地指定。我已閱讀了official RELAX NG tutorial,刪除了the spec,並完成了一些基本的Google搜索,但我一直無法找到任何使用RELAX NG的方法。我可以找出最好的,你需要做這樣的事情:
<element name="A">
<ref name="B"/>
<ref name="B"/>
<optional><ref name="B"/></optional>
<optional><ref name="B"/></optional>
<optional><ref name="B"/></optional>
</element>
<define name="B">
<element name="B">
<text/>
</element>
</define>
這是可行的,但將開始尋找醜陋當你需要出現一個更大的數字。在我的實際模式中,我有一個可能發生多達256次的元素類型,所以手動指定的可選元素將會很笨重。如果需要,我會做,但我想知道是否有更優雅的方式來表達我的出現限制。
感謝您的建議!我曾想到你的第一個方法,但決定反對它。第二種方法似乎不會太麻煩。我可能會最終使用這個。 – 2010-09-03 17:30:11