# xml - Schema  : warum passen die nicht zueinander



## HaenschenKlein (14. Apr 2007)

Hi,
ich sitze gerade hier und verusche ein Schema für eine XML Datei zu erstellen. Es ist das erste mal, dass ich mich damit beschäftige.

Hier die XML Datei:

```
<ReaderConfiguration>
  <Mapping Code = "SVCL" TargetClass = "dsl.ServiceCall">
    <Field name = "CustomerName" start = "4" end = "18"/>
    <Field name = "CustomerID" start = "19" end = "23"/>
    <Field name = "CallTypeCode" start = "24" end = "27"/>
    <Field name = "DateOfCallString" start = "28" end = "35"/>
  </Mapping>
  <Mapping Code = "USGE" TargetClass = "dsl.Usage">
    <Field name = "CustomerID" start = "4" end = "8"/>
    <Field name = "CustomerName" start = "9" end = "22"/>
    <Field name = "Cycle" start = "30" end = "30"/>
    <Field name = "ReadDate" start = "31" end = "36"/>
  </Mapping>
</ReaderConfiguration>
```

Und hier mal das Schema:

```
<?xml version="1.0"?> 
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
   <xsd:element name="ReaderConfiguration" type="readerType" />
   <xsd:complexType name="readerType"> 
      <xsd:sequence> 
         <xsd:element name="Mapping" type="mappingType" /> 
      </xsd:sequence> 
   </xsd:complexType>
   <xsd:complexType name="mappingType">
   	<xsd:sequence>
	  <xsd:element name="Field" type="fieldType"/>
	</xsd:sequence>
	<xsd:attribute name="Code" type="xsd:string" /> 
	<xsd:attribute name="TargetClass" type="xsd:string" />
   </xsd:complexType>
   <xsd:complexType name="fieldType">
   	<xsd:attribute name="name" type="xsd:string" />
	<xsd:attribute name="start" type="xsd:decimal" />
	<xsd:attribute name="end" type="xsd:decimal" />
   </xsd:complexType>
</xsd:schema>
```

Ich dachte des passt schon so, hab des Schema durch den Validator von w3c geschickt und alles ging klatt. Dann habe ich diesen Validator gefunden:
http://tools.decisionsoft.com/schemaValidate/
Da kann ich da mein xml File gegen das Schema validieren lassen. Jetzt kommen da aber Fehler:


```
TYPE 	LOC 	MESSAGE
Validation 	4, 57 	cvc-complex-type.2.4.d: Invalid content was found starting with element 'Field'. No child element is expected at this point.
Validation 	8, 52 	cvc-complex-type.2.4.d: Invalid content was found starting with element 'Mapping'. No child element is expected at this point.
Validation 	10, 58 	cvc-complex-type.2.4.d: Invalid content was found starting with element 'Field'. No child element is expected at this point.
```

Super, aber ich hab doch gesagt, dass da Childs kommen dürfen mit dem "sequence". Ich steig da nicht durch, auch nicht, weil bei dem Validator nicht gesagt wird, ob das Schema falsch ist, oder die Datei. Da ich wirklich keine Ahnung von XML hab und jetzt schon über ne Stunde probiere wende ich mich an euch Experten. Könnt ihr mir helfen?


----------



## thefunkyone (15. Apr 2007)

Du must aber die Cardinalität der Elemente explizit angeben ansonsten ist nur ein Element zugelassen. 


```
<xsd:element name="Field" type="fieldType" maxOccurs="unbounded"/>
```

Hier noch einne link dazu www.edition-w3c.de/TR/2001/REC-xmlschema-0-20010502/


----------



## HaenschenKlein (16. Apr 2007)

Danke jetzt tuts. Auch für den Links nochma Danke


----------

