2016-04-13 47 views
1

Bir virgülle ayrılmış iki pozitif tamsayı değeri gerektiren bir sınırlama yapmaya çalışıyorum. Diğer mesajlara baktım ama yapmaya çalıştığım şey diğer problemlerden daha basit gibi görünüyordu. Ben Oluşan değeri bu (örneğin) gibi bakmak istiyorumXSD'de virgülle ayrılmış değerleri tanımlama

<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> Bu defa ne var.

Benzer bir öğe olan <dimensions> ikinci bir öğem var, ancak virgül yerine, tamsayılar 'x' harfiyle ayrılmış olmasını istiyorum. Dolayısıyla bu eleman için bir değer örneği <dimensions>20x20</dimensions> olacaktır.

İlk olarak, doğru temel veri türünü kullanıyorum bile mi? Ayrıca şanssız xs:string kullanarak bir sürü kombinasyon denedim. İkincisi, kalıpları nasıl ifade edebilirim?

+0

Ayrıca bilmelidir maxOccurs'un xs: element içinde izinli olmadığını. Bu öğeyi, karmaşık bir türdeki ana öğenin bir üyesi olarak bildirirken kullanılmalıdır. Örneğin, "", "" öğesinin üyesi olarak tanımlanmışsa, ızgara tanımında hücrelerin maxOccurs değerini ayarlarsınız. – bitfiddler

+1

Regex'te fırça yapmak isteyebilirsiniz; [1-1000] karakter grubu, (a) '1' ila '1' ('1') aralığında ve (b) '0', '0'dan herhangi birini içeren grubun herhangi bir karakterini sağlar. 'veya' 0 '- yani, 0 | 1' ile eşdeğerdir. –

+0

bitfiddler, evet, bir ana öğeye sahiptir; Ben sadece buraya dahil etmedim çünkü desen sorusuyla alakalı değildi. C.M. Sperberg-McQueen, evet, '1.' ile başladığım tek geçerli değerler olduğunda bunu çözdüm. – Misenus

cevap

1

Bu XSD bir cell içinde virgülle ayrılmış, negatif olmayan tamsayılar bir çift sağlayacaktır: Benzer bir xs:pattern tabii dimensions için kullanılabilecek

<?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 value="\d+x\d+"/> 
İlgili konular