-1
我怎麼能實現一個架構驗證,可滿足以下要求如何實現有條件的架構驗證
<test>
<e1>abc</e1>
<e2>
<e21>xxx</e21>
<e22>yyy</e22>
</e2>
</test>
,所以我的要求是,E22不能爲空,如果E21不爲空,那麼,如何設計我的xsd模式
我怎麼能實現一個架構驗證,可滿足以下要求如何實現有條件的架構驗證
<test>
<e1>abc</e1>
<e2>
<e21>xxx</e21>
<e22>yyy</e22>
</e2>
</test>
,所以我的要求是,E22不能爲空,如果E21不爲空,那麼,如何設計我的xsd模式
如果e21不爲空,則要求「e22不能爲空」意思是說,我認爲e21和e22都是空的或者都不是。
如果E21和E22空值由具有元素不存在輸送時,一個簡單的內容模型的伎倆:
<complexType name="e2">
<sequence minOccurs="0" maxOccurs="1">
<element ref="e21"/>
<element ref="e22"/>
</sequence>
</complexType>
這裏任E21和E22兩者都存在的文件中,或者兩者都不是。
如果您還想允許的情況下E21缺失(空),E22是沒有,那麼如果「被空」你的意思是「爲空」的順序改爲
<sequence minOccurs="0" maxOccurs="1">
<element ref="e21" minOccurs="0"/>
<element ref="e22"/>
</sequence>
,然後在XSD 1.0中無法強制約束;在XSD 1.1中,您可以使用斷言來表達和執行相對複雜的約束。在XSD 1.1中查找關於共同約束和斷言的Stack Overflow問題。
什麼問題?通過說出他們可以包含的內容來聲明你的所有元素。如果'e22'有一個'e21'不共享的約束,請在'e22'的聲明中寫入該約束,而不是在'e21'的聲明中寫入。如果你嘗試過,但它不起作用,你需要向我們展示你的嘗試。 –
您好我可能會問這個問題是錯誤的,所以我的要求是,如果e21不爲空,e22不能爲空。您的洞察力受到讚賞 – remo