[jboss-dev-forums] [JBoss XML Binding Development] - Element is not bound as a global element.
thomas.diesler@jboss.com
do-not-reply at jboss.com
Thu Nov 26 07:36:35 EST 2009
I have a schema like this
| <xsd:schema xmlns="http://org.jboss.test.osgi.jbossxb.simple"
| xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://org.jboss.test.osgi.jbossxb.simple"
| elementFormDefault="qualified" attributeFormDefault="unqualified"
| version="1.0.0">
|
| <xsd:element name="course-booking" type="courseBooking" />
| <xsd:complexType name="courseBooking">
| <xsd:sequence>
| <xsd:element ref="company" />
| <xsd:element ref="student" minOccurs="1" maxOccurs="unbounded" />
| </xsd:sequence>
| <xsd:attribute name="courseReference" type="xsd:string" use="required" />
| <xsd:attribute name="courseDate" type="xsd:date" use="required" />
| <xsd:attribute name="invoiceReference" type="xsd:string" use="required" />
| <xsd:attribute name="totalPrice" type="xsd:decimal" use="required" />
| </xsd:complexType>
| <xsd:element name="student" type="studentType" />
| <xsd:complexType name="studentType">
| <xsd:attribute name="firstName" type="xsd:string" use="required" />
| <xsd:attribute name="surname" type="xsd:string" use="required" />
| </xsd:complexType>
| <xsd:element name="company" type="companyType" />
| <xsd:complexType name="companyType">
| <xsd:sequence>
| <xsd:element name="address" />
| <xsd:element ref="contact" />
| </xsd:sequence>
| <xsd:attribute name="name" type="xsd:string" />
| </xsd:complexType>
| <xsd:element name="contact" type="contactType" />
| <xsd:complexType name="contactType">
| <xsd:attribute name="name" type="xsd:string" use="required" />
| <xsd:attribute name="telephone" type="xsd:string" use="required" />
| <xsd:attribute name="email" type="xsd:string" use="required" />
| </xsd:complexType>
| </xsd:schema>
|
and an xml like this
| <booking xmlns="http://org.jboss.test.osgi.jbossxb.simple" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
| <company name="ACME Consulting">
| <address>10 Coyote Avenue, Arizona, USA</address>
| <contact name="Duke" email="duke at acme.com" telephone="1234567890" />
| </company>
| <student firstName="Jane" surname="Dow" />
| <student firstName="John" surname="Doe" />
| </booking>
|
using this code
| Unmarshaller unmarshaller = UnmarshallerFactory.newInstance().newUnmarshaller();
| unmarshaller.setSchemaValidation(true);
| unmarshaller.setNamespaceAware(true);
| unmarshaller.setValidation(true);
|
| URL xsdurl = getResourceURL("simple/booking.xsd");
| assertNotNull("booking.xsd available", xsdurl);
|
| URL xmlurl = getResourceURL("simple/booking.xml");
| assertNotNull("booking.xml available", xmlurl);
|
| JBossEntityResolver entityResolver = new JBossEntityResolver();
| entityResolver.registerLocalEntity(CourseBooking.NAMESPACE_XML_SIMPLE, xsdurl.toExternalForm());
| unmarshaller.setEntityResolver(entityResolver);
|
| DefaultSchemaResolver schemaBindingResolver = new DefaultSchemaResolver();
| schemaBindingResolver.addClassBinding(CourseBooking.NAMESPACE_XML_SIMPLE, CourseBooking.class);
|
| CourseBooking booking = (CourseBooking)unmarshaller.unmarshal(xmlurl.toExternalForm(), schemaBindingResolver);
| assertNotNull("booking not null", booking);
|
I get
| Caused by: org.jboss.xb.binding.JBossXBRuntimeException: Element {http://org.jboss.test.osgi.jbossxb.simple}booking is not bound as a global element.
| at org.jboss.xb.binding.sunday.unmarshalling.SundayContentHandler.startElement(SundayContentHandler.java:641)
| at org.jboss.xb.binding.parser.sax.SaxJBossXBParser$DelegatingContentHandler.startElement(SaxJBossXBParser.java:401)
| at org.apache.xerces.parsers.AbstractSAXParser.startElement(Unknown Source)
| at org.apache.xerces.impl.xs.XMLSchemaValidator.startElement(Unknown Source)
|
I debugged into SundayContentHandler and found that SchemaBinding
| public ParticleBinding getElementParticle(QName name)
| {
| return elements.get(name);
| }
|
has element "course-booking" registered instead of "booking"
If I change the schema and xml to use course-booking, all works fine.
Why is "booking' not registered?
View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4267658#4267658
Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4267658
More information about the jboss-dev-forums
mailing list