如何在XMLSchema中定義此模式的元素?
<port num="80"/>
<port min="80" max="443"\>
因爲必須由屬性NUM或範圍被定義端口。或xmlschema中複雜類型的語句
1
A
回答
1
可以實現,如果你的解析器支持W3C XSD 1.1:
<xs:element name="port" type="portType" />
<xs:complexType name="portType">
<xs:attribute name="min" type="xs:integer" use="optional"/>
<xs:attribute name="max" type="xs:integer" use="optional"/>
<xs:attribute name="num" type="xs:integer" use="optional"/>
<xs:assert test="@num or (@max and @min)" />
</xs:complexType>
如果你的分析器不支持XSD 1.1,你可以使用XSD 1.0 + Schematron的,在這裏你將裏面xs:annotation/xs:appinfo
和使用您的斷言XSLT或一些外部工具來驗證它們。就你而言,僅僅在XSD驗證之後檢查運行解析器的語言中的斷言可能會更簡單。
2
helderdarocha已經指向XSD 1.1。另一種方法是重新考慮你的設計。它目前對兩種不同的結構使用相同的名稱;給他們不同的名字使問題變得微不足道。
<portnum num="80"/>
<portrange min="80" max="443"/>
或
<port><num>80</num></port>
<port><range min="80" max="443"/></port>
相關問題
- 1. XmlSchema刪除重複類型
- 2. C#幫助:添加一個複雜類型的主要的XmlSchema
- 3. 複雜if語句
- 4. 複雜if語句
- 5. mysql複雜語句
- 6. 複雜if語句
- 7. 複雜的JPQL ORDER語句
- 8. 複雜的Yii SQL語句
- 9. 複雜的SQL語句
- 10. 複雜的SELECT MySQL語句
- 11. SQL複雜的select語句
- 12. 從複雜的select語句
- 13. MySQL複雜的IF語句
- 14. 複雜類型
- 15. 複雜類型
- 16. 複雜類型
- 17. WebGrid中的複雜類型
- 18. vb.net複雜if語句
- 19. LabVIEW複雜如果語句
- 20. 複雜插入語句
- 21. sql複雜選擇語句
- 22. 複雜刪除SQL語句
- 23. 複雜SQL選擇語句
- 24. MySQL中的複雜SELECT語句
- 25. CodeDom中產生複雜的if語句
- 26. 接受複雜類型並返回複雜類型的Web API?
- 27. 另一種複雜類型的XSD複雜類型擴展
- 28. 複雜的語法(類)
- 29. Ksoap複雜類型
- 30. 複雜的SQL語句的可行性