2016-04-13 33 views
1

我試圖做一個限制,它需要由逗號分隔的兩個正整數值。我通過其他帖子看,但它似乎是我想要做的比其他問題更簡單。這是我到目前爲止有:在XSD中定義以逗號分隔的值

<xs:element name="cell" maxOccurs="unbounded"> 
     <xs:simpleType> 
       <xs:restriction base="xs:positiveInteger"> 
         <xs:pattern value="[1-1000],[1-1000]"/> 
       </xs:restriction> 
     </xs:simpleType> 
</xs:element> 

我想要的結果值這個樣子(例如):<cell>4,15</cell>

我有第二個元素<dimensions>是相似的,但不是一個逗號,我想整數由字母'x'分隔。所以這個元素的一個值的例子是<dimensions>20x20</dimensions>

首先,我甚至使用正確的基礎數據類型?我也嘗試了一大堆使用xs:string但沒有運氣的組合。其次,我如何表達模式?

+0

你也應該知道maxOccurs在xs:元素中是不允許的。在將此元素聲明爲複雜類型中父元素的成員時應該使用它。例如,如果''被定義爲''的成員,則在網格定義中設置單元格的maxOccurs。 – bitfiddler

+1

你可能想要刷一下正則表達式;字符組「[1-1000]」允許由(a)範圍'1'到'1'(如:'1')和(b)'0','0 '或'0' - 也就是說,它相當於'0 | 1'。 –

+0

bitfiddler,是的,有一個父元素;我只是沒有把它包括在內,因爲它與模式問題無關。 C.M. Sperberg-McQueen,是的,我想到了當我開始使用'1'時唯一有效的值。 – Misenus

回答

1

這XSD將允許cell內的一對逗號分隔的,非負整數:

<?xml version="1.0" encoding="UTF-8"?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:element name="cell"> 
    <xs:simpleType> 
     <xs:restriction base="xs:string"> 
     <xs:pattern value="\d+,\d+"/> 
     </xs:restriction> 
    </xs:simpleType> 
    </xs:element> 
</xs:schema> 

類似xs:pattern當然也可以用於dimensions

 <xs:pattern value="\d+x\d+"/>