# Datentyp in Schema definieren



## puck (3. Dez 2005)

Hallo zusammen,
ich möchte einen Datentyp in Schema definieren, aber das ganze ist etwas Tricky (denke ich zumindest).

Und zwar zuerst der obere Datentyp:

```
<xsd:complexType name="FirmaType">
   <xsd:sequence>
     <xsd:element name="Firmenname" type="xsd:string"  minOccurs="0"  maxOccurs="1" />  
     <xsd:element name="FirmenIdent" type="FirmenIdentType"/>
   </xsd:sequence>  
<xsd:complexType>
```
In diesem befindet sich der Datentyp "FirmenIdentType". 


```
<xsd:simpleType name="FirmenIdentType">
   <xsd:restriction base="token">
     <pattern value='GLN = \d{13}'/>
   </xsd:restriction>
<xsd:simpleType>
```

Und jetzt das Problem. Es soll möglich sein die FirmenIdent als sogen. GLN-Nummer oder als D-U-N-S id zuzulassen. 
In meinem Beispiel ist es jetzt nur möglich eine GLN-Nummer einzugeben. Den Zeichenstring 'GLN' ein Whitespace und eine 13-Stellige Ziffer.
Aber was kann man machen, um die Möglichkeit einzubauen, daß man auch D-U-N-S id (9 Ziffern und, naja ist ja egal) zulässt? Also einen anderen Pattern einbauen?
Oder zwei Untertypen definieren. Dann bleibt immer noch die Frage, wie man in FirmenIdentType darstellt, daß man entweder den einen oder den anderen Untertyp einstellt. Also optional das eine oder andere Format.

Wie macht man da am besten?

Gruss Christian


----------



## byte (3. Dez 2005)

Hast Du es mal mit Choice probiert?


```
<xsd:simpleType name="FirmenIdentType">
   <xsd:restriction base="token">
     <xsd:choice>
       <pattern value='GLN = \d{13}'/>
       <pattern ... />
     </xsd:choice>
   </xsd:restriction>
<xsd:simpleType>
```


----------



## puck (9. Dez 2005)

Jo, genau das isses.

Danke nochmal

Gruss Christian


----------

