2010-11-19 9 views
4

Ich möchte die Anzahl der Stellen in einem Element zu 6 erlaubt begrenzen:XSD-Schema: Wie die Anzahl der Stellen in einem Wert angeben?

<AccountNumber>123456</AccountNumber> 
<AccountNumber>999999</AccountNumber> 
<AccountNumber>000000</AccountNumber> 

Das Feld Formatspezifikation ist 6-stellig, mit Nullen aufgefüllt, numerisch.

i read that i might want to use die totalDigits Restriktion, basierend auf:

totalDigits Gibt die genaue Anzahl der zulässigen Ziffern. Muss größer als Null

Also ich die einfache Art haben:

<xs:simpleType name="AccountNumber"> 
    <xs:restriction base="xs:int"> 
     <xs:totalDigits value="6"/> 
    </xs:restriction> 
</xs:simpleType> 

Und während es ungültige Nummern fängt, wie zum Beispiel:

<AccountNumber>1234567</AccountNumber> 
<AccountNumber>0000000</AccountNumber> 
<AccountNumber></AccountNumber> 

es nicht ungültige Nummern verfängt:

<AccountNumber>12345</AccountNumber> 
<AccountNumber></AccountNumber> 
<AccountNumber>00123</AccountNumber> 
<AccountNumber>00012</AccountNumber> 
<AccountNumber>00001</AccountNumber> 
<AccountNumber>00000</AccountNumber> 
<AccountNumber>0000</AccountNumber> 
<AccountNumber>000</AccountNumber> 
<AccountNumber>00</AccountNumber> 
<AccountNumber>0</AccountNumber> 

Was ist eine vorgeschlagene Einschränkung zu spezifizieren die genaue Anzahl der erlaubten Ziffern?

Antwort

4

Sie müssen xs:pattern verwenden und einen regulären Ausdruck angeben, um ihn auf eine Zahl zu beschränken.

<xs:simpleType name="AccountNumber"> 
    <xs:restriction base="xs:int"> 
     <xs:pattern value="\d{6}"/> 
    </xs:restriction> 
</xs:simpleType> 
+0

ich sagen wollte, * „Sie ein Muster mit einem' xs verwenden können:? Int' Nun, wie etwa das.“* –

+1

@Ian: Ja, ich war auch ein wenig überrascht. Ich habe etwas gelernt, was darauf antwortet. Immer glücklich zu helfen. –

-1

würde ich wahrscheinlich xs:minInclusive und xs:maxInclusive verwenden.

+0

... dauert SO eine Weile, um zu benachrichtigen, dass andere Antworten geschrieben wurden – Anon

+0

Ich glaube diese Grenze nach Wert nicht durch die Anzahl der Ziffern. Wenn minInclusive 7 ist, bedeutet das den Wert 7, nicht 7 Ziffern. –

+1

@Jeff - würden Sie glauben, dass 'minInclusive' von 1000000 sieben Ziffern ist? Und das 'maxExclusive' von 9999999 ist ebenfalls siebenstellig? – Anon

0

Dies ist die einfachste Art und Weise

<xs:element name="prodid"> 
    <xs:simpleType> 
     <xs:restriction base="xs:integer"> 
     <xs:pattern value="[0-9][0-9][0-9][0-9][0-9]"/> 
     </xs:restriction> 
    </xs:simpleType> 
    </xs:element>