簡體   English   中英

或xmlschema中復雜類型的語句

[英]Or statement in complex type in xmlschema

如何在XMLSchema中定義這種元素模式?
<port num="80"/>
<port min="80" max="443"\\>
因為port必須由屬性numrange定義。

helderdarocha已經指出了XSD 1.1。 另一種方法是重新考慮您的設計。 它目前對兩種不同的結構使用相同的名稱; 給他們不同的名字使這個問題變得微不足道。

<portnum num="80"/>
<portrange min="80" max="443"/>

要么

<port><num>80</num></port>
<port><range min="80" max="443"/></port>

如果您的解析器支持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驗證之后檢查運行解析器的語言中的斷言可能更簡單。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM