You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@xmlbeans.apache.org by Andy Putnins <pu...@lett.com> on 2009/03/02 19:49:55 UTC

How to change SchemaType to XML Schema?

If I have a document that contains an embedded XML Schema, how can I
change the SchemaType of the <xs:schema> element from an element
of the containing document type? One way to do it would be to convert 
it to a string and compiling it, but that seems like a waste.

When I attempt to execute this:
SchemaTypeSystem sts = XmlBeans.compileXsd(
        new XmlObject[] { schemaObject },
        XmlBeans.getBuiltinTypeSystem(), 
        compileOptions);

I get the following error:

org.apache.xmlbeans.XmlException: Thread main: The 0th supplied input is not a schema document: its type is E=configSchema|T=metadataType@http://lett.com/ns/netconf/server/meta/1.0
	at org.apache.xmlbeans.impl.schema.SchemaTypeSystemCompiler.compile(SchemaTypeSystemCompiler.java:211)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.apache.xmlbeans.XmlBeans.compileXmlBeans(XmlBeans.java:667)
	at org.apache.xmlbeans.XmlBeans.compileXsd(XmlBeans.java:553)
	at com.lett.netconf.server.db.ManagedDevice$Metadata$Schema.compile(ManagedDevice.java:781)
	at com.lett.netconf.server.db.ManagedDevice$Metadata$Schema.<init>(ManagedDevice.java:658)
	at com.lett.netconf.server.db.ManagedDevice$Metadata.<init>(ManagedDevice.java:416)
	at com.lett.netconf.server.db.ConfigServerDevice.<init>(ConfigServerDevice.java:105)
	at com.lett.netconf.server.db.Storage.<init>(Storage.java:173)
	at com.lett.netconf.server.db.Storage.<init>(Storage.java:123)
	at com.lett.netconf.server.NetconfServerDaemon.<clinit>(NetconfServerDaemon.java:183)

schemaObject is an XmlObject that is a document with the root element <xs:schema>. It was
extracted from the configSchema element of a document of type metadataType. The configSchema
element has a single child element of type <xs:any>, which is the schema.

	- Andy


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@xmlbeans.apache.org
For additional commands, e-mail: user-help@xmlbeans.apache.org


RE: How to change SchemaType to XML Schema?

Posted by Radu Preotiuc-Pietro <ra...@oracle.com>.
The error message is like that because the code that checks for SchemaDocument.Schema also checks for SchemaDocument :-)

It would be even more confusing if it tried to explain very precisely what it is looking for.

The document types are just an XMLBeans convention to allow it to also represent documents as typed XmlObjects and not just elements. A document is of course different than the root element, and so document types are types for documents. They contain root elements but not all types that can contain one root element are document types.

Hope this doesn't confuse the issue even further.

Radu 

> -----Original Message-----
> From: Andy Putnins [mailto:putnins@lett.com] 
> Sent: Monday, March 02, 2009 4:21 PM
> To: user@xmlbeans.apache.org
> Subject: Re: How to change SchemaType to XML Schema?
> 
> Thanks - that works!
> 
> Even after having used XmlBeans for a while I still confuse 
> elements and types :^(. However, the error message was rather 
> misleading. My debugger clearly showed that schemaObject was, 
> indeed, a document with the root element <xs:schema>. After 
> selecting the first child, you have a <xml-fragment> with all 
> of the schema elements as children, not a "schema document"
> as the error message states.
> 
>     - Andy
> 
> Radu Preotiuc-Pietro wrote:
> > It seems to me you have to go one level down to get to the 
> schema, for 
> > example
> >
> > schemaObject.selectChildren(new 
> > QName("http://www.w3.org/2001/XMLSchema", "schema"));
> >
> > Radu
> >
> >
> >> -----Original Message-----
> >> From: Andy Putnins [mailto:putnins@lett.com]
> >> Sent: Monday, March 02, 2009 1:50 PM
> >> To: user@xmlbeans.apache.org
> >> Subject: How to change SchemaType to XML Schema?
> >>
> >> If I have a document that contains an embedded XML Schema, 
> how can I 
> >> change the SchemaType of the <xs:schema> element from an 
> element of 
> >> the containing document type? One way to do it would be to 
> convert it 
> >> to a string and compiling it, but that seems like a waste.
> >>
> >> When I attempt to execute this:
> >> SchemaTypeSystem sts = XmlBeans.compileXsd(
> >>         new XmlObject[] { schemaObject },
> >>         XmlBeans.getBuiltinTypeSystem(),
> >>         compileOptions);
> >>
> >> I get the following error:
> >>
> >> org.apache.xmlbeans.XmlException: Thread main: The 0th 
> supplied input 
> >> is not a schema document: its type is 
> >> E=configSchema|T=metadataType@http://lett.com/ns/netconf/serve
> >> r/meta/1.0
> >> 	at
> >> org.apache.xmlbeans.impl.schema.SchemaTypeSystemCompiler.compi
> >> le(SchemaTypeSystemCompiler.java:211)
> >> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> >> 	at
> >> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccess
> >> orImpl.java:39)
> >> 	at
> >> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMeth
> >> odAccessorImpl.java:25)
> >> 	at java.lang.reflect.Method.invoke(Method.java:597)
> >> 	at
> >> org.apache.xmlbeans.XmlBeans.compileXmlBeans(XmlBeans.java:667)
> >> 	at org.apache.xmlbeans.XmlBeans.compileXsd(XmlBeans.java:553)
> >> 	at
> >> com.lett.netconf.server.db.ManagedDevice$Metadata$Schema.compi
> >> le(ManagedDevice.java:781)
> >> 	at
> >> com.lett.netconf.server.db.ManagedDevice$Metadata$Schema.<init
> >>
> >>> (ManagedDevice.java:658)
> >>>
> >> 	at
> >> com.lett.netconf.server.db.ManagedDevice$Metadata.<init>(Manag
> >> edDevice.java:416)
> >> 	at
> >> com.lett.netconf.server.db.ConfigServerDevice.<init>(ConfigSer
> >> verDevice.java:105)
> >> 	at com.lett.netconf.server.db.Storage.<init>(Storage.java:173)
> >> 	at com.lett.netconf.server.db.Storage.<init>(Storage.java:123)
> >> 	at
> >> com.lett.netconf.server.NetconfServerDaemon.<clinit>(NetconfSe
> >> rverDaemon.java:183)
> >>
> >> schemaObject is an XmlObject that is a document with the 
> root element 
> >> <xs:schema>. It was extracted from the configSchema element of a 
> >> document of type metadataType. The configSchema element 
> has a single 
> >> child element of type <xs:any>, which is the schema.
> >>
> >> 	- Andy
> >>
> >>
> >> 
> ---------------------------------------------------------------------
> >> To unsubscribe, e-mail: user-unsubscribe@xmlbeans.apache.org
> >> For additional commands, e-mail: user-help@xmlbeans.apache.org
> >>
> >>
> >>
> >>
> >
> >
> > 
> ---------------------------------------------------------------------
> > To unsubscribe, e-mail: user-unsubscribe@xmlbeans.apache.org
> > For additional commands, e-mail: user-help@xmlbeans.apache.org
> >
> >
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@xmlbeans.apache.org
> For additional commands, e-mail: user-help@xmlbeans.apache.org
> 
> 
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@xmlbeans.apache.org
For additional commands, e-mail: user-help@xmlbeans.apache.org


Re: How to change SchemaType to XML Schema?

Posted by Andy Putnins <pu...@lett.com>.
Thanks - that works!

Even after having used XmlBeans for a while I still confuse elements
and types :^(. However, the error message was rather misleading. My debugger
clearly showed that schemaObject was, indeed, a document with the root
element <xs:schema>. After selecting the first child, you have a 
<xml-fragment>
with all of the schema elements as children, not a "schema document"
as the error message states.

    - Andy

Radu Preotiuc-Pietro wrote:
> It seems to me you have to go one level down to get to the schema, for example
>
> schemaObject.selectChildren(new QName("http://www.w3.org/2001/XMLSchema", "schema"));
>
> Radu
>
>   
>> -----Original Message-----
>> From: Andy Putnins [mailto:putnins@lett.com] 
>> Sent: Monday, March 02, 2009 1:50 PM
>> To: user@xmlbeans.apache.org
>> Subject: How to change SchemaType to XML Schema?
>>
>> If I have a document that contains an embedded XML Schema, 
>> how can I change the SchemaType of the <xs:schema> element 
>> from an element of the containing document type? One way to 
>> do it would be to convert it to a string and compiling it, 
>> but that seems like a waste.
>>
>> When I attempt to execute this:
>> SchemaTypeSystem sts = XmlBeans.compileXsd(
>>         new XmlObject[] { schemaObject },
>>         XmlBeans.getBuiltinTypeSystem(),
>>         compileOptions);
>>
>> I get the following error:
>>
>> org.apache.xmlbeans.XmlException: Thread main: The 0th 
>> supplied input is not a schema document: its type is 
>> E=configSchema|T=metadataType@http://lett.com/ns/netconf/serve
>> r/meta/1.0
>> 	at 
>> org.apache.xmlbeans.impl.schema.SchemaTypeSystemCompiler.compi
>> le(SchemaTypeSystemCompiler.java:211)
>> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>> 	at 
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccess
>> orImpl.java:39)
>> 	at 
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMeth
>> odAccessorImpl.java:25)
>> 	at java.lang.reflect.Method.invoke(Method.java:597)
>> 	at 
>> org.apache.xmlbeans.XmlBeans.compileXmlBeans(XmlBeans.java:667)
>> 	at org.apache.xmlbeans.XmlBeans.compileXsd(XmlBeans.java:553)
>> 	at 
>> com.lett.netconf.server.db.ManagedDevice$Metadata$Schema.compi
>> le(ManagedDevice.java:781)
>> 	at 
>> com.lett.netconf.server.db.ManagedDevice$Metadata$Schema.<init
>>     
>>> (ManagedDevice.java:658)
>>>       
>> 	at 
>> com.lett.netconf.server.db.ManagedDevice$Metadata.<init>(Manag
>> edDevice.java:416)
>> 	at 
>> com.lett.netconf.server.db.ConfigServerDevice.<init>(ConfigSer
>> verDevice.java:105)
>> 	at com.lett.netconf.server.db.Storage.<init>(Storage.java:173)
>> 	at com.lett.netconf.server.db.Storage.<init>(Storage.java:123)
>> 	at 
>> com.lett.netconf.server.NetconfServerDaemon.<clinit>(NetconfSe
>> rverDaemon.java:183)
>>
>> schemaObject is an XmlObject that is a document with the root 
>> element <xs:schema>. It was extracted from the configSchema 
>> element of a document of type metadataType. The configSchema 
>> element has a single child element of type <xs:any>, which is 
>> the schema.
>>
>> 	- Andy
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: user-unsubscribe@xmlbeans.apache.org
>> For additional commands, e-mail: user-help@xmlbeans.apache.org
>>
>>
>>
>>     
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@xmlbeans.apache.org
> For additional commands, e-mail: user-help@xmlbeans.apache.org
>
>   

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@xmlbeans.apache.org
For additional commands, e-mail: user-help@xmlbeans.apache.org


RE: How to change SchemaType to XML Schema?

Posted by Radu Preotiuc-Pietro <ra...@oracle.com>.
It seems to me you have to go one level down to get to the schema, for example

schemaObject.selectChildren(new QName("http://www.w3.org/2001/XMLSchema", "schema"));

Radu

> -----Original Message-----
> From: Andy Putnins [mailto:putnins@lett.com] 
> Sent: Monday, March 02, 2009 1:50 PM
> To: user@xmlbeans.apache.org
> Subject: How to change SchemaType to XML Schema?
> 
> If I have a document that contains an embedded XML Schema, 
> how can I change the SchemaType of the <xs:schema> element 
> from an element of the containing document type? One way to 
> do it would be to convert it to a string and compiling it, 
> but that seems like a waste.
> 
> When I attempt to execute this:
> SchemaTypeSystem sts = XmlBeans.compileXsd(
>         new XmlObject[] { schemaObject },
>         XmlBeans.getBuiltinTypeSystem(),
>         compileOptions);
> 
> I get the following error:
> 
> org.apache.xmlbeans.XmlException: Thread main: The 0th 
> supplied input is not a schema document: its type is 
> E=configSchema|T=metadataType@http://lett.com/ns/netconf/serve
> r/meta/1.0
> 	at 
> org.apache.xmlbeans.impl.schema.SchemaTypeSystemCompiler.compi
> le(SchemaTypeSystemCompiler.java:211)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccess
> orImpl.java:39)
> 	at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMeth
> odAccessorImpl.java:25)
> 	at java.lang.reflect.Method.invoke(Method.java:597)
> 	at 
> org.apache.xmlbeans.XmlBeans.compileXmlBeans(XmlBeans.java:667)
> 	at org.apache.xmlbeans.XmlBeans.compileXsd(XmlBeans.java:553)
> 	at 
> com.lett.netconf.server.db.ManagedDevice$Metadata$Schema.compi
> le(ManagedDevice.java:781)
> 	at 
> com.lett.netconf.server.db.ManagedDevice$Metadata$Schema.<init
> >(ManagedDevice.java:658)
> 	at 
> com.lett.netconf.server.db.ManagedDevice$Metadata.<init>(Manag
> edDevice.java:416)
> 	at 
> com.lett.netconf.server.db.ConfigServerDevice.<init>(ConfigSer
> verDevice.java:105)
> 	at com.lett.netconf.server.db.Storage.<init>(Storage.java:173)
> 	at com.lett.netconf.server.db.Storage.<init>(Storage.java:123)
> 	at 
> com.lett.netconf.server.NetconfServerDaemon.<clinit>(NetconfSe
> rverDaemon.java:183)
> 
> schemaObject is an XmlObject that is a document with the root 
> element <xs:schema>. It was extracted from the configSchema 
> element of a document of type metadataType. The configSchema 
> element has a single child element of type <xs:any>, which is 
> the schema.
> 
> 	- Andy
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@xmlbeans.apache.org
> For additional commands, e-mail: user-help@xmlbeans.apache.org
> 
> 
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@xmlbeans.apache.org
For additional commands, e-mail: user-help@xmlbeans.apache.org