2013-07-09 44 views

回答

2

接下來的事情呢?

<xs:simpleType name="string_10_13"> 
    <xs:restriction base="xs:string"> 
     <xs:pattern value=".{10}|.{13}" /> 
    </xs:restriction> 
</xs:simpleType> 

它應該更精確(例如消除空白等),但它可能是一種方法。

沒有以下的正則表達式可以工作:

<xs:simpleType name="string_10"> 
    <xs:restriction base="xs:string"> 
     <xs:length value="10" /> 
    </xs:restriction> 
</xs:simpleType> 
<xs:simpleType name="string_13"> 
    <xs:restriction base="xs:string"> 
     <xs:length value="13" /> 
    </xs:restriction> 
</xs:simpleType> 
<xs:simpleType name="string_10_13"> 
    <xs:union memberTypes="string_10 string_13"/> 
</xs:simpleType> 
+0

謝謝Jirka。我曾考慮過一個正則表達式,但我確信使用xml架構的「內置」特性有更強大的方法... – balteo

+0

我想我找到了另一種方式 - 我改進了答案。 –

+0

優秀:我不知道這個xs:union標籤。非常感謝! – balteo

0

我想這裏真正的需求是支持的ISBN,它可以是長度爲10或13個字符。但ISBN還有其他約束,您可能也想在簡單類型中表示它們(在XSD 1.1中,甚至可以使用斷言來強制執行正確的校驗數字...)。因此,我傾向於定義兩種類型的ISBN-10和ISBN-13,然後使用這些類型的聯合類型作爲它們的成員類型。

+0

謝謝邁克爾。不,實際上它不是一個ISBN ... – balteo

+0

好吧,從給出的信息猜出真正的問題是遊戲的一部分,你必須做好準備猜錯...... –

+0

沒問題邁克爾。無論如何感謝您的輸入! – balteo