XML Schema

Status
Nicht offen für weitere Antworten.

susa.

Mitglied
Hallo,

bin total verwirrt. Ich weiß, dass das Thema schon hundert Mal gefragt wurde, aber ich habe immernoch keinen Durchblick.
Also zu meinem Problem: Ich habe ein XML-Schema, das wie folgt aussehen könnte (habs mal gekürzt):
Code:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
	<xs:element name="CREATE">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="NUMMER">
					<xs:simpleType>
						<xs:restriction base="xs:string">
							<xs:maxLength value="15"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:element>
				<xs:element name="FEHLER">
					<xs:complexType>
						<xs:simpleContent>
							<xs:extension base="xs:string">
								<xs:attribute name="fehlercode" type="xs:int"/>
							</xs:extension>
						</xs:simpleContent>
					</xs:complexType>
				</xs:element>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
</xs:schema>
So, um ein XML-File mit solch einem Schema zu erstellen habe ich per Hand mit dem SaxBuilder folgendes geschrieben:
Code:
SAXBuilder builder = new SAXBuilder("org.apache.xerces.parsers.SAXParser", true );                                         
builder.setFeature("http://apache.org/xml/features/validation/schema", true );                          
builder.setProperty("http://apache.org/xml/properties/schema/external-schemaLocation","C:\\temp\\res.xsd"); 
rootElement = new Element("CREATE"); 
Element myElement = new Element("NUMMER"); 
myElement = myElement.addContent("12");
rootElement.addContent(myElement);
                                        
Element myElement2 = new Element("FEHLER"); 
myElement2.addContent("error");
myElement2.setAttribute("fehlercode", "1");
rootElement.addContent(myElement2);
                                        
 doc = new Document();
doc.setRootElement(rootElement);
						 				
PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(file))); 
org.jdom.output.Format format = org.jdom.output.Format.getPrettyFormat(); 
new XMLOutputter(format).output(doc, out); 
out.close();

Funktioniert ja auch soweit. ABER: Er beachtet bei der Art und Weise überhaupt nicht, ob es nach dem Schema C:\\temp\\res.xsd geht.
Meine Frage also: Wie muss ich den Quellcode verändern, dass er mir ne Fehlermeldung bringt, wenn ich ein XML-Dokument erstellen will, dass nicht nach dem Scheme aufgebaut ist?

Vielen Dank schon VOrher :)
 

susa.

Mitglied
Toll!!!
Super Link!!!! Dankeschön!! Funktioniert auch super!
Trotzdem hab ich noch ein Problem:

Code:
<xs:annotation>
			<xs:documentation>Comment describing your root element</xs:documentation>
		</xs:annotation>

steht im .xsd drin.

und bekomme jetzt den Fehler:
Code:
Fehler bei Validierung 
org.xml.sax.SAXParseException: s4s-elt-character: 
Non-whitespace characters are not allowed in schema elements other than 'xs:appinfo' and 'xs:documentation'. 
Saw '001'

Hab schon nachgeschaut. Wenn man dieses Annotation in dem Schema drin hat, sollen da 2 Felder (appinfo und documentation) sein. (keine "normalen" Elemente, sonst würde ja da stehen <xs:element name=annotation>, oder?)

Die Fragen:
Bedeutet die Fehlermeldung, dass eben diese Elemente fehlen? Wenn ja, wie kann ich annotation mit den Unterpunkten appinfo und documentation anlegen?

Vielleicht hilft der Quelltext der Validierung?
Code:
SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Source schemaSource =  new StreamSource(new File("C:\\temp\\tmp.xml"));
Schema schema = schemaFactory.newSchema(schemaSource);   
Validator validator = schema.newValidator();
validator.validate(new StreamSource(new File("C:\\temp\\response.xsd")));
 

susa.

Mitglied
So, Geschafft! Danke nochmal für die Hifle, Bleiglanz!
Und für jeden der mal kompletten Code für eine Validierung sucht, hier isser ;) :

Code:
SchemaFactory schemaFactory = SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema");
Source schemaSource =  new StreamSource(new File("C:\\temp\\response.xsd"));
Schema schema = schemaFactory.newSchema(schemaSource);                     
Validator validator = schema.newValidator();
validator.validate(new StreamSource(new File("C:\\temp\\tmp.xml")));
 

byte

Top Contributor
Ich habe den Code mal an ner falschen XML-Datei getestet und bekomme keine Fehlermeldung. Irgendwas kann da noch nicht stimmen!?
 
R

Roar

Gast
musst wohl noch mit validator.setErrorHandler() nen handler hinzufügen
 

susa.

Mitglied
Hi, also ich hab den auchmal getestet, und da kommt eine Fehlermeldung so wie ich sie will. hab den code allerdings noch in try und catch und gebe dann den gecatchten error aus. Und dann sagt er genau, was fehlt bzw. was erwartet wird vom Schema.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
E Wie kann ich ein XSD-Schema in einer JSP-Seite verwenden? XML & JSON 7
B XML Schema Validierung des Zahlenbereichs XML & JSON 3
P Eclipse Rinzo - Schema muss mit DOCTYPE "root" übereinstimmen XML & JSON 0
K XML Schema list unique value restriction XML & JSON 0
F.S.WhiTeY JAXB: Schema nicht "erben" XML & JSON 2
Q Konvertierung von json zum Java Objekt nach vorgegebenem Schema XML & JSON 3
A Fehler beim Erzeugen eines XML-Schema XML & JSON 4
G Suche guten freien XML Schema (XSD) Editor XML & JSON 7
X XML Schema Beziehungen validieren XML & JSON 1
F XML-Schema mapping XML & JSON 6
D eine Schema für ein andere Schema XML XML & JSON 14
P Qualifizierung und XML- Schema XML & JSON 2
G mit EMF gegen XML-Schema validieren XML & JSON 7
V JAXB schema 2 java XML & JSON 3
M XML Schema & Attribut Bedingung XML & JSON 2
B Einschränken der Eingabe bei XML SCHEMA XML & JSON 2
H Schema-Validierung mit JDOM XML & JSON 2
S finde den Schema-Compiler "xjc" nicht XML & JSON 4
P XSD Schema: Konstanten mit "fixed" erzeugen geht nicht ??? XML & JSON 3
G Eindeutige Kennnummer Schema XML & JSON 3
C Validierung klappt nicht mit Schema XML & JSON 2
S XML-Schema einlesen um parsen zu erleichtern? XML & JSON 2
T Schema --> GUI (User) --> XML XML & JSON 5
T Klassen aus XML-Schema generieren und füllen XML & JSON 10
S PDF Erzeugung - Probleme mit der XML Datei bei Schema-Infos XML & JSON 2
G Problem mit XML-Schema Validierung mit Java XML & JSON 12
J XML - schreiben und einlesen (Schema) XML & JSON 14
A xml-schema aus wsdl auslagern in eine eigene xsd-Datei XML & JSON 3
H xml - Schema : warum passen die nicht zueinander XML & JSON 2
J XML-Schema: Beliebige Unterelemente zulassen XML & JSON 4
E XOM setzen von XML-Schema declaration beim erzeugen XML-File XML & JSON 2
J schema-Validierung mit xerces und jdom: bug in java 1.4? XML & JSON 9
J JDOM mit XML-Schema XML & JSON 8
P Datentyp in Schema definieren XML & JSON 2
N Externes Schema inkludieren XML & JSON 7
A XML Dokument aus einem Schema ableiten/generieren? XML & JSON 6
Z beispiel für valides Xml-Dokument durch XML-Schema XML & JSON 5
Z Frage zu XML Schema XML & JSON 3
T XML mit Java gegen Schema validieren XML & JSON 6

Ähnliche Java Themen

Neue Themen


Oben