我有通過XML傳輸的對象的層次結構。通過指出哪個元素可能包含哪些子元素,層次結構規則在XML Schema中很容易表達。 XML數據的simplifed例子是(實際的對象數據被包含在屬性和爲了簡潔省略):我可以在XML模式中表達「可能/不可以包含」跨越多個級別的規則嗎?
<root>
<channel>
<router>
<message />
<message />
<message />
</router>
<router>
<message />
<message />
</router>
</channel>
<channel></channel>
</root>
現在我想介紹「的文件夾」,也就是即這些節點只是用來構造較長的兒童列表以便於使用。如果我製作一個通用的<folder>
元素,它不會強加它自己的規則,而是從樹中的下一個非文件夾元素繼承它們。
在我看來,我無法在XSD中表達,或者我可以嗎?
我可以考慮替代方案,比如爲每個可能的規則(醜陋)設置特定的文件夾元素,僅僅忽略XSD中的規則並在代碼中強制執行它們(罰款),或者以某種方式分離XML中的對象層次結構和中間節點(不太確定如何)。如果您有任何問題,我也會很感激您的意見。