XML Schema hat Fehler. Nur wo:( ?



  • Hallo,

    habe ein Problem mit meinem XML- Schema. Kann mir bitte jemand helfen? 😕

    Hier das XML:

    <?xml version="1.0" encoding="UTF-8" standalone="no" ?> 
    <Liste> 
     <Personen Tabelle="Muenchen"> 
        <Feld FeldName="zero"> 
          <Name>Christa</Name> 
          <Nummer>1</Nummer> 
        </Feld> 
        <Feld Feldname="Bonn"> 
          <Name>Leon</Name> 
          <Nummer>5</Nummer> 
          <Zustand>aktiv</Zustand> 
        </Feld> 
        <Feld Datenbankfeldname="Stuttgart"> 
          <Name>Theo</Name> 
          <Familienstand>verheiratet</Familienstand> 
          <Anzahl_Kinder>2</Anzahl_Kinder> 
        </Feld> 
      </Personen> 
    </Liste>
    

    und hier das entsprechende Schema:

    <?xml version="1.0" encoding="ISO-8859-1" ?> 
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    
    <xs:element name="Liste"> 
     <xs:complexType mixed="true" /> 
    </xs:element> 
      <xs:element name="Personen"> 
        <xs:complexType mixed="true" /> 
      </xs:element> 
          <xs:element name="Feld" > 
           <xs:complexType> 
            <xs:choice> 
              <xs:sequence> 
                 <xs:element name="Name" type="xs:string" > 
                 <xs:element name="Nummer" type="xs:integer" />    
                 <xs:element name="Zustand" type="xs:integer" /> 
                 <xs:element name="Familienstand" type="xs:integer" /> 
                      <xs:restriction base="string"> 
                        <xs:enumeration value="verheiratet"/> 
              <xs:enumeration value="ledig"/> 
              <xs:enumeration value="verwitwet"/> 
              <xs:enumeration value="geschiede"/> 
              <xs:enumeration value="getrennt lebend"/> 
              <xs:enumeration value="Lebensgemeinschaft"/> 
                      </xs:restriction> 
                 <xs:element name="Anzahl_Kinder" type="xs:string"/> 
             </xs:sequence> 
                 </xs:choice> 
    
            <xs:attribute name="Tabelle" type="xs:string" use="required" /> 
            <xs:attribute name="Feldname" type="xs:string" use="required" /> 
    
     </xs:complexType> 
    </xs:element> 
    
    </xs:schema>
    

    Bevor ich die enumeration Geschichte eingefügt habe, war die Validation okay.
    Danach aber nicht mehr. Ich muss aber einschränken, dass z.B. der Knoten Familienstand nur die aufgeführten Inhalte (Values) besitzten darf.

    Hier die Fehlermeldung: Element xs:restriction ist unter xs:sequence nicht zulässig.

    Wenn ich das sequence raushole, obwohl die Reihenfolge der Inhalte schon wichtig ist, dann klappt es auch nicht, dann sagt er, dass xs:restriction nicht unter </xs:choise> sein darf usw.

    Bitte um eure Hilfe

    Vielen Dank 🙂



  • les da nichts von geschichte



  • Übrigens ist mir gerade aufgefallen, dass die Formatierung nicht ganz richtig ist. Das ist aber im Original korrekt. Auf wohlgeformtheit prüfen sagt Altova Editor okay. Nur beim Validieren mag er das Ganze dann doch nicht.



  • @PRIEST: Mit "Geschichte" meinte ich: "die enumeration Sache".

    Mein XML ist ja veschachtelt. Ich weiß nicht, wie ich im XML Schema beschreiben soll, dass der tag <Familienstand> nur die Werte: verheiratet, ledig, verwitwet, getrennt lebend, geschieden und Lebensgemeinschaft beinhalten darf.



  • <xs:element name="Familienstand" type="xs:integer" />
                                                            <!--   ^^^   -->
                      <xs:restriction base="string">
    

    Sollte die xs:restriction nicht innerhalb des Elements xs:element und nicht danach auftauchen?



  • hmm, wie soll das funktionieren?
    Habe einiges damit ausprobiert, aber validation klappt nicht.
    Meine Frage ist eigentlich "nur" wie ich in einem complexType Element weiter verschachteln kann.Also die values angeben kann



  • senseo schrieb:

    hmm, wie soll das funktionieren?
    Habe einiges damit ausprobiert, aber validation klappt nicht.
    Meine Frage ist eigentlich "nur" wie ich in einem complexType Element weiter verschachteln kann.Also die values angeben kann

    Hast Du folgendes probiert?

    <xs:element name="Familienstand"> 
      <xs:complexType>
        <xs:restriction base="string"> 
          <xs:enumeration value="verheiratet"/> 
          <xs:enumeration value="ledig"/> 
          <xs:enumeration value="verwitwet"/> 
          <xs:enumeration value="geschiede"/> 
          <xs:enumeration value="getrennt lebend"/> 
          <xs:enumeration value="Lebensgemeinschaft"/> 
        </xs:restriction> 
      </xs:complexType>
    </xs:element>
    


  • habe ich gerade versucht.
    Es kommt die Fehlermeldung, dass restriction unter ComplexType nicht zulässig ist



  • Entschuldige, eine Enumeration ist auch ein SimpleType (und darübehinaus hat bei restriction base="string" noch das "xs:" gefehlt):

    <xs:element name="Familienstand"> 
      <xs:simpleType>
        <xs:restriction base="xs:string"> 
          <xs:enumeration value="verheiratet"/> 
          <xs:enumeration value="ledig"/> 
          <xs:enumeration value="verwitwet"/> 
          <xs:enumeration value="geschiede"/> 
          <xs:enumeration value="getrennt lebend"/> 
          <xs:enumeration value="Lebensgemeinschaft"/> 
        </xs:restriction> 
      </xs:simpleType>
    </xs:element>
    


  • er meckert restriction also an wo immer es auch auftaucht? dann versuch doch mal das einfachste mögliche schema mit einer restriction - vielleicht kennt er restrictions garnicht?



  • @LordJaxom:

    Du bist ein SCHATZ, vielen Dank 🙂 jetzt funktioniert es. Mein Gott, seit Tagen recherchiere ich im Netz und endlich das war der Fehler.

    cool, ich freu mich so 🙂

    Nur noch eine letzte Frage:

    <xs:attribute name="Tabelle" type="xs:string" use="required" /> 
            <xs:attribute name="Feldname" type="xs:string" use="required" />
    

    Das mag er jetzt plötzlich nicht mehr. Er dagt, dass attribute unter sequence nicht zulässig ist. Das hat er vorher nicht gemeldet.



  • Vorher standen die Attribute auch unter der choice. Ist das </xs:choice> evtl. verloren gegangen?!

    Tipp: Ordentliche Formatierung (Einrückung) im Schemaeditor hilft, so etwas zu sehen (falls es das war).



  • Ja, das war es 🙂

    vielen Dank. Ach du weißt garnicht, wie sehr du mir geholfen hast. : -)

    Vielen vielen Dank. Es funktioniert jetzt einwandfrei:-)

    LG, Sandra


Anmelden zum Antworten