# XML Validierung mit XSD über DOM - Cannot find.



## Seawolf-371 (21. Okt 2008)

Hi,

ich habe ein (hoffentlich) kleines Problem mit der Validierung eines XML-Files und dem entsprechendem XSD-File.

Ich versuche es mit einem javax.xml.validation.Validator zu validieren allering s bekomme ich immer folgende Fehlerausgabe:
org.xml.sax.SAXParseException: cvc-elt.1: Cannot find the declaration of element 'Contactlist'.

Bitte schaut euch mal die XMl, XSD und meinen Java-Validierungs-Code an. Ich find den Fehler nicht und suche schon 2 Tage. Bin echt ratlos. 

TIA
Seawolf

*
Es folgt mein Code:*

*XML:*

```
<?xml version="1.0" encoding="UTF-8"?>
<Contactlist>
    <Contact id="Kai Gruber">
        <Firstname><![CDATA[Kai]]></Firstname>
        <Lastname><![CDATA[Gruber]]></Lastname>
        <Street><![CDATA[Talweg 9]]></Street>
        <Zip><![CDATA[08285]]></Zip>
        <Town><![CDATA[Thalheim]]></Town>
        <Tel><![CDATA[0172/1337745]]></Tel>
        <Handy><![CDATA[]]></Handy>
    </Contact>
    <Contact id="Andreas Winkler">
        <Firstname><![CDATA[Andreas]]></Firstname>
        <Lastname><![CDATA[Winkler]]></Lastname>
        <Street><![CDATA[HausStrasse 38]]></Street>
        <Zip><![CDATA[08080]]></Zip>
        <Town><![CDATA[WohnStadt]]></Town>
        <Tel><![CDATA[0133/713371337]]></Tel>
        <Handy><![CDATA[]]></Handy>
    </Contact>
</Contactlist>
```



*XSD:*

```
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns="contactmanagement" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="contactmanagement">
  <xs:element name="Town" type="xs:string"/>
  <xs:element name="Tel" type="xs:string"/>
  <xs:element name="Handy" type="xs:string"/>
  <xs:element name="Street" type="xs:string"/>
  <xs:element name="Lastname" type="xs:string"/>
  <xs:element name="Zip" type="xs:string"/>
  <xs:element name="Firstname" type="xs:string"/>
  <xs:element name="Contactlist">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="Contact" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="Contact">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="Firstname"/>
        <xs:element ref="Lastname"/>
        <xs:element ref="Street"/>
        <xs:element ref="Zip"/>
        <xs:element ref="Town"/>
        <xs:element ref="Tel"/>
		<xs:element ref="Handy"/>
      </xs:sequence>
      <xs:attribute name="id" use="required"  type="xs:string"/>
    </xs:complexType>
  </xs:element>
</xs:schema>
```


*Java:*

```
private void parseContactXML(String contactFileName) {
		usedFileName = contactFileName;
				
		DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

		try {

			/**
			 * Dokument wird geparst
			 */
			DocumentBuilder db = dbf.newDocumentBuilder();
			dom = db.parse(contactFileName+".xml");
			
			/**
			 * Dokument wird gegen das XML-Schema validiert
			 */
			SchemaFactory schemaFactory = SchemaFactory.newInstance( XMLConstants.W3C_XML_SCHEMA_NS_URI );
			// get the custom xsd schema describing the required format for my XML files.
			Schema schemaXSD = schemaFactory.newSchema( new File (contactFileName+".xsd" ) );
			// Create a Validator capable of validating XML files according to my custom schema.
			Validator validator = schemaXSD.newValidator();
			validator.validate( new DOMSource( dom ) );

		}catch(ParserConfigurationException pce) {
			pce.printStackTrace();
		}catch(SAXException se) {
			se.printStackTrace();
		}catch(IOException ioe) {
			ioe.printStackTrace();
		}
	}
```


----------



## Gelöschtes Mitglied 5909 (21. Okt 2008)

mach aus <Contactlist> 

<Contactlist xmlns="contactmanagement">


----------



## Seawolf-371 (22. Okt 2008)

Hi,

danke dir raiL, aber es scheitn dennoch nciht zu funktionieren.

Mein XML sieht jetzt so aus: 


```
<?xml version="1.0" encoding="UTF-8"?>

<Contactlist xmlns="contactmanagement">
    .
    .
    . 
</Contactlist>
```

Denke du hattest das so gemeint oder?

Nur leider bringt er immer noch den Fehler in Java.



Aus meiner XSD hab ich mal den Eintrag


```
<xs:schema xmlns="contactmanagement" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="contactmanagement">
```

durch


```
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
```

ersetzt.

Das funktioniert dann. 


Aber kann ich das so stehen lassen? Oder muss es unbedingt mit 
	
	
	
	





```
xmlns=""
```
 und 
	
	
	
	





```
targetNamespace=""
```
 in der XSD stehen?


TIA & Grüßele
Seawolf


----------



## Gelöschtes Mitglied 5909 (22. Okt 2008)

Das mit den Namespaces is immer so ne Sache 
Lass ihn einfach raus und lass es so wies ist wenns funktioniert,
ansonsten würde der Parser ja meckern 

Tipp: mach mal die persöhnlichen daten aus dem Beitrag oben raus


----------



## Seawolf-371 (22. Okt 2008)

Ok, Danke raiL.

Das mit den Daten hab ich so nen weng verpatzt .

Da ich nicht angemneldet bin hab ich kein Editier Button 

Nja. 

Aber danke für den Tip, ich werds beim nächsten mal Berücksichtigen.

Danke dir nochmal. 

Grüßele
Seawolf

*@admin, den Beitrag bitte als "gelöst" markieren - TIA*


----------

