Heyho,
kämpfe grade mit einer Validation einer XML gegenüber einer XSD und es liegt wohl am namespace. Es finden sich einige Dinge im Internet, allerdings half bisher keins so recht.
Ich bekomm beim marshal die beliebte "could not find declaration of element [mein-root-element]" Exception.
Hier meine XSD:
[HIGHLIGHT="xml"]<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://xml.netbeans.org/schema/BookSchema"
xmlns:tns="http://xml.netbeans.org/schema/BookSchema"
elementFormDefault="qualified">
<xsd:element name="book-store" type="tns:type-book-store"/>
<xsd:complexType name="type-book-store">
<xsd:sequence>
<xsd:element name="book" type="tns:type-book" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
...
<!-- Define "Book" -->
...
</xsd:schema>[/HIGHLIGHT]
Dazu die JAVA-Klasse, mit dem XmlRootElement:
[HIGHLIGHT="Java"]@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "type-book-store", propOrder = {
"book"
})
@XmlRootElement(name = "book-store", namespace = "http://www.w3.org/2001/XMLSchema-instance")
public class TypeBookStore {
...
}[/HIGHLIGHT]
Daraus bekomme ich beim Generieren folgende XML:
[HIGHLIGHT="xml"]<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xsi:book-store xmlns="http://xml.netbeans.org/schema/BookSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<xsi:book>
...
</xsi:book>
</xsi:book-store>[/HIGHLIGHT]
Das passt vom namespace her noch nicht. Korrekt müsste es so aussehen:
[HIGHLIGHT="xml"]<ns0:book-store xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
xmlns:ns0='http://xml.netbeans.org/schema/BookSchema'
xsi:schemaLocation='http://xml.netbeans.org/schema/BookSchema BookSchema.xsd'>
<ns0:book>
...
</ns0:book>
</ns0:book-store>[/HIGHLIGHT]
Die Frage ist nun, wie bekomm ich die namespaces alle dahin? Nur über @XmlRootElement(namespace = "[Hier brauch ich den Namespace]") gehts nicht.
Danke fürs Lesen
kämpfe grade mit einer Validation einer XML gegenüber einer XSD und es liegt wohl am namespace. Es finden sich einige Dinge im Internet, allerdings half bisher keins so recht.
Ich bekomm beim marshal die beliebte "could not find declaration of element [mein-root-element]" Exception.
Hier meine XSD:
[HIGHLIGHT="xml"]<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://xml.netbeans.org/schema/BookSchema"
xmlns:tns="http://xml.netbeans.org/schema/BookSchema"
elementFormDefault="qualified">
<xsd:element name="book-store" type="tns:type-book-store"/>
<xsd:complexType name="type-book-store">
<xsd:sequence>
<xsd:element name="book" type="tns:type-book" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
...
<!-- Define "Book" -->
...
</xsd:schema>[/HIGHLIGHT]
Dazu die JAVA-Klasse, mit dem XmlRootElement:
[HIGHLIGHT="Java"]@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "type-book-store", propOrder = {
"book"
})
@XmlRootElement(name = "book-store", namespace = "http://www.w3.org/2001/XMLSchema-instance")
public class TypeBookStore {
...
}[/HIGHLIGHT]
Daraus bekomme ich beim Generieren folgende XML:
[HIGHLIGHT="xml"]<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xsi:book-store xmlns="http://xml.netbeans.org/schema/BookSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<xsi:book>
...
</xsi:book>
</xsi:book-store>[/HIGHLIGHT]
Das passt vom namespace her noch nicht. Korrekt müsste es so aussehen:
[HIGHLIGHT="xml"]<ns0:book-store xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
xmlns:ns0='http://xml.netbeans.org/schema/BookSchema'
xsi:schemaLocation='http://xml.netbeans.org/schema/BookSchema BookSchema.xsd'>
<ns0:book>
...
</ns0:book>
</ns0:book-store>[/HIGHLIGHT]
Die Frage ist nun, wie bekomm ich die namespaces alle dahin? Nur über @XmlRootElement(namespace = "[Hier brauch ich den Namespace]") gehts nicht.
Danke fürs Lesen