Hello Frank,
works perfect. That's exactly what I wanted. I think there is no need to do
the registration automatically, if it works this way.
You saved my day ;) Thank you.
Best regards - Claus
Am Montag, 11. August 2008 16:03:46 schrieb Frank Budinsky:
> Hi Claus,
>
> Tuscany doesn't automatically load metadata (schemas) on the fly. You need
> to register the types before you load the instances. You need to execute
> something like this before calling XMLHelper.load():
>
> URL url = SdoDroolsTest.class.getResource("/person.xsd");
> getScope().getXSDHelper().define(url.openStream(), url.toString());
>
> Automatically registering types, based on schemaLocation attributes in the
> XML, is something we've talked about adding as a load option, but nobody
> has found the time to look into implementing it.
>
> Frank.
>
> Claus Straube <[EMAIL PROTECTED]> wrote on 08/11/2008 09:28:29 AM:
> > Hello,
> >
> > I've got a XML Schema and a XML instance of this schema. Now I want to
> > generate a DataObject from the given XML instance. This works fine, but
>
> not
>
> > as expected. If I've got a schema like this:
> >
> > <?xml version="1.0" encoding="UTF-8"?>
> > <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
> > targetNamespace="http://www.organisation_01.com/xmlschema/v1.0/Person"
> > xmlns:tns="http://www.organisation_01.com/xmlschema/v1.0/Person"
> > elementFormDefault="qualified">
> > <xs:element name="person" type="personType"/>
> >
> > <xs:complexType name="personType">
> > <xs:all>
> > <xs:element name="firstname" type="xs:string"/>
> > <xs:element name="secondname" type="xs:string"/>
> > </xs:all>
> > </xs:complexType>
> >
> > </xs:schema>
> >
> > And my XML instance looks like this:
> >
> > <?xml version="1.0" encoding="UTF-8"?>
> > <tns:person
> > xmlns:tns="http://www.organisation_01.com/xmlschema/v1.0/Person"
> > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> > xsi:schemaLocation="http://www.organisation_01.com/xmlschema/v1.0/Person
> >
> > http://localhost:8080/xmlschema/organisation_01/person.xsd">
> > <tns:firstname>Peter</tns:firstname>
> > <tns:secondname>Pan</tns:secondname>
> > </tns:person>
> >
> > I can read in the XMl instance with (scope is my HelperContext):
> >
> > InputStream in = SdoDroolsTest.class.
> > getResourceAsStream("/person01.xml");
> > XMLDocument xml = scope.getXMLHelper().load(in);
> > DataObject sdo_root = xml.getRootObject();
> >
> > But the rootObject is not from type "personType" as expected. This is a
>
> big
>
> > problem for me, because I've to do a rule based type mapping - this is
>
> quite
>
> > difficult with generic types. My questions:
> >
> > 1. is there the possibility to declare sdo_root as "personType"...
> > 2. or better - can Tuscany do this for me while generating the SDO from
>
> my
>
> > XML?
> >
> > Thank's in advance for your help!
> >
> > Claus
--
Claus Straube
Schleißheimer Str. 215
80809 München
Tel. 089 - 1430 1172