XML Schema restriction für element UND attribut

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • XML Schema restriction für element UND attribut

    Moin, ich habe hier für eine kleine Testdatenbank den Typ Personen definiert. Dieser hat ein Element "telefon" mit Attribut typ (mobil|festnetz) und der Nummer (nur Zahlen und Abstände). Wie kann ich das Schema richtig definieren? Mein parser spuckt einen Fehler nach dem anderen aus...

    Sollte etwa so aussehen:
    Code:
    ...
    <telefon typ="mobil">023 447 55 66</telefon>
    ...
    Code:
        <xs:complexType name="personen">
            <xs:complexContent>
                <xs:extension base="tiere">
                    <xs:sequence>
                        <xs:element name="telefon">
                            <xs:complexType>
                                <xs:simpleContent>                            
                                    <xs:restriction base="xs:string">
                                        <xs:pattern value="([ 0-9\+]+)" />
                                        <xs:attribute name="typ">
                                            <xs:simpleType>
                                                <xs:restriction base="xs:string">
                                                    <xs:pattern value="mobil|festnetz" />
                                                </xs:restriction>
                                            </xs:simpleType>
                                        </xs:attribute>
                                    </xs:restriction>
                                </xs:simpleContent>
                            </xs:complexType>
                        </xs:element>
                        ...
                    </xs:sequence>
                </xs:extension>
            </xs:complexContent>
        </xs:complexType>
    Im Moment meint XMLSpy dazu:

    Code:
    Die Basistyp-Definition 'xs:string' ist für die Complex Type Definition '{anonymous}', welche vom Typ 'simpleContent' ist, unzulässig.
    	Fehlerpfad: xs:schema / xs:complexType / xs:complexContent / xs:extension / xs:sequence / xs:element / xs:complexType
    	Details:
    		src-ct.2.1: Die Basistyp-Definition 'xs:string' ist für die Complex Type Definition '{anonymous}', welche vom Typ 'simpleContent' ist, unzulässig.
    Zuletzt geändert von fightwithxml; 29.12.2008, 18:38.

  • #2
    Habe es mittlerweile so gelöst:

    Code:
    	<xs:complexType name="personen">
    		<xs:complexContent>
    			<xs:extension base="tiere">
    				<xs:sequence>
    					<xs:element name="telefon" minOccurs="0">
    						<xs:complexType>
    							<xs:simpleContent>
    								<xs:extension base="telefon_type">
    								
    									<xs:attribute name="typ">
    										<xs:simpleType>
    											<xs:restriction base="xs:string">
    												<xs:pattern value="mobil|festnetz"/>
    											</xs:restriction>
    										</xs:simpleType>
    									</xs:attribute>
    									
    								</xs:extension>
    							</xs:simpleContent>
    						</xs:complexType>
    					</xs:element>
    ...
    
    	<xs:simpleType name="telefon_type">
    		<xs:restriction base="xs:string">
    			<xs:pattern value="([ 0-9\+]*)"/>
    		</xs:restriction>
    	</xs:simpleType>
    Ich hoffe das hilft jemandem.

    Kommentar

    Lädt...
    X