I'm looking over some of what you said.  I'm trying to meet a deadline, so
right now, I'd just like to get the XSD working with the mapping.  However,
I do plan on looking into the XML code generator next week.

I've changed a few things around, but I'm still having issues.  For some
reason, http://www.castor.org/how-to-enable-xml-validation.html just isn't
clicking.

*castor.xml*:

<?xml version="1.0"?>
<!DOCTYPE mapping PUBLIC "-//EXOLAB/Castor Mapping DTD Version 1.0//EN"
    "http://castor.org/mapping.dtd";>

<mapping xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
    xsi:noNamespaceSchemaLocation="db-config-1.0.xsd">

*db-config-1.0.xsd*:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema";>

*db-config-sample.xml*:

<?xml version="1.0" encoding="UTF-8"?>
<dataSource xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
    xsi:noNamespaceSchemaLocation="db-config-1.0.xsd">

This is the error I get when I try to unmarshal:

java.lang.RuntimeException: org.exolab.castor.mapping.MappingException:
Nested error: org.exolab.castor.xml.MarshalException: Attribute "xmlns:xsi"
must be declared for element type "mapping".{File: [not available]; line: 6;
column: 52}

Can you tell me what I'm doing wrong here?

Thanks for your patience.

On Wed, Jul 16, 2008 at 12:40 PM, Geoffrey Fairchild <
[EMAIL PROTECTED]> wrote:

> I'll look into the XML code generator.  I didn't know what that was and
> didn't see that it existed, and that may very well do what I want it to do.
>
>
> On Wed, Jul 16, 2008 at 12:15 PM, Werner Guttmann <[EMAIL PROTECTED]>
> wrote:
>
>> Geoffrey,
>>
>> Geoffrey Fairchild wrote:
>> > Hm, maybe I'm misunderstanding the purpose of the mapping file.  I
>> simply
>> > want to map from an XML file containing data into a Java object
>> > representation of that data.  The Castor mapping XML file seems like the
>> > most logical way to do this without having to write a Java XML parser.
>> Yes, it is most commonly used way of XML data binding when you only have
>> Java classes, but no XML schema.
>> > The
>> > XSD merely provides requirements on how the XML file should be formed.
>> SUre. But with Castor XML, when you have an XML schema, there's a second
>> option to about XML data binding, i.e. mapping between XML and Java: the
>> XML code generator. You basically use the code generator to create Java
>> classes from an XML schema that automatically correspond to the XML
>> schema defined. In addition to these domain classes, the code generator
>> will generate a second set of Java classes, i.e. the descriptor classes.
>> More further down.
>>
>> > I simply followed the guide at
>> > http://www.castor.org/how-to-enable-xml-validation.html to get my XML
>> file
>> > validated against the XSD, but I'm having the issues I previously
>> mentioned.
>> Okay, addressing just this question, have you seen my inline comment re:
>> the invalid use of the 'schemaLoaction' attribute in the mapping file ?  >
>> > What are you talking about when you mention "internal descriptor
>> classes"?
>> As explained above, when using the code generator to generate Java
>> classes from an XML schema, the code generator will generate a second
>> set of classes which we call 'descriptor classes'. There descriptor
>> classes define the XML data binding between the Java classes generated
>> and the XML contract defined in the XML schema. In other words, there is
>> no need to define a mapping file any more.
>>
>> Actually, when you use a mapping file, on startup Castor XML converts
>> the mapping definitions to (internally use) descriptors.
>>
>> > I looked over your website, and it primarily talks about the mapping
>> file,
>> > so I'm a little confused.  I don't see any mention of "internal
>> descriptor
>> > classes."
>> No, true. But in the left sided menu bar, you'll find a section 'XML
>> code generator', incl. documentation about integration with build tools
>> such as Ant, Maven, the binding file, etc.
>>
>> >
>> > Thanks for your help.
>> >
>> > Geoff
>> >
>> > On Wed, Jul 16, 2008 at 4:40 AM, Werner Guttmann <
>> [EMAIL PROTECTED]>
>> > wrote:
>> >
>> >> Geoffrey,
>> >>
>> >> why do you want to be using a mapping file to map your Java classes to
>> >> XML when you have an XML schema available and as such could be in a
>> >> position where you generate Java classes (and internal descriptor
>> >> classes) from the XML schema, and as such avoid having to write a
>> >> mapping file.
>> >>
>> >> Geoffrey Fairchild wrote:
>> >>> First of all, if you have a Something Awful account, you can read a
>> more
>> >>> formatted version of this here:
>> >>> http://forums.somethingawful.com/showthread.php?threadid=2902508
>> >>>
>> >>>
>> >>>
>> >>> I'll go ahead and rewrite this if you don't have an account.
>> >>>
>> >>>
>> >>>
>> >>> I've been messing with this most of the afternoon, and I just can't
>> >> figure
>> >>> it out.
>> >>>
>> >>>
>> >>>
>> >>> Basically, I've got an XML file I've got to parse.  I need to put the
>> >> data
>> >>> into a few Java objects, and Castor is a really easy way to do it.
>> >>  Castor's
>> >>> working, and it's putting the data in the container properly.  The
>> >> problem
>> >>> is that I have an XSD schema file defined to validate the XML file,
>> but
>> >> I'm
>> >>> having issues getting Castor to validate it.  The XSD is necessary
>> >> because I
>> >>> can type complete garbage into the XML file, and Castor reports
>> success
>> >> even
>> >>> though it's totally invalid XML.
>> >> That's an odd statement. If it's not valid XML, Castor will report
>> >> exceptions.
>> >>
>> >>> I want to prevent this from happening.
>> >>>
>> >>>
>> >>>
>> >>> I'll get to it.  Here're the pertinent lines from *castor.xml*, the
>> file
>> >>> that Castor uses to map the XML elements/attributes to the Java
>> objects:
>> >>>
>> >>>
>> >>>
>> >>> <?xml version="1.0"?>
>> >>>
>> >>> <!DOCTYPE mapping PUBLIC "-//EXOLAB/Castor Mapping DTD Version
>> 1.0//EN"
>> >>>
>> >>>             "http://castor.org/mapping.dtd";>
>> >>>
>> >>>
>> >>>
>> >>> <mapping xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
>> >>>
>> >>>             xmlns="http://centurylogix.com/dbconfig";
>> >>>
>> >>>             xsi:schemaLocation="
>> >> http://centurylogix.com/dbconfigdb-config-1.0.xsd";>
>> >>>
>> >>>
>> >>>             <class
>> >>> name="com.centurylogix.graph.hybrid.io.containers.DataSourceInfo">
>> >>>
>> >>>                         <map-to xml="dataSource" ns-uri="
>> >>> http://centurylogix.com/dbconfig"; />
>> >> Why on earth are you referencing the XML schema file from your mapping
>> >> file ? That does not make sense at all. If you want Castor to validate
>> >> your XML document instance against an XML schema, please refer to the
>> >> XML schema from the XML document instance 8and nowhere else).
>> >>
>> >>> If you need more than that, I can post it, but those should be the
>> only
>> >>> relevant lines.
>> >>>
>> >>>
>> >>>
>> >>> Here're the first few lines from *db-config-1.0.xsd* which is
>> obviously
>> >> the
>> >>> schema file used to verify the XML file:
>> >>>
>> >>>
>> >>>
>> >>> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema";
>> >>>
>> >>>             targetNamespace="http://centurylogix.com/dbconfig";
>> >>>
>> >>>             xmlns="http://centurylogix.com/dbconfig";
>> >>>
>> >>>             elementFormDefault="qualified">
>> >>>
>> >>>
>> >>>
>> >>> And here're the first few lines from *db-config-sample.xml*, a sample
>> XML
>> >>> file that Castor reads in and puts into the correct Java objects:
>> >>>
>> >>>
>> >>>
>> >>> <?xml version="1.0" encoding="UTF-8"?>
>> >>>
>> >>> <dataSource xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
>> >>>
>> >>>             xsi:schemaLocation="
>> >> http://centurylogix.com/dbconfigdb-config-1.0.xsd";>
>> >>>
>> >>>
>> >>> I do have a *castor.properties* file defined with the following
>> contents,
>> >>> per http://www.castor.org/how-to-enable-xml-validation.html:
>> >>>
>> >>>
>> >>>
>> >>> org.exolab.castor.indent=true
>> >>>
>> >>> org.exolab.castor.parser.namespaces=true
>> >>>
>> >>> org.exolab.castor.sax.features=
>> http://xml.org/sax/features/validation,\<http://xml.org/sax/features/validation,%5C>
>> <http://xml.org/sax/features/validation,%5C>
>> >>>
>> >>>             
>> >>> http://apache.org/xml/features/validation/schema,\<http://apache.org/xml/features/validation/schema,%5C>
>> <http://apache.org/xml/features/validation/schema,%5C>
>> >>>
>> >>>
>> >> http://apache.org/xml/features/validation/schema-full-checking
>> >>>
>> >>>
>> >>> When I try to unmarshal the data, this is the error I get:
>> >>>
>> >>>
>> >>>
>> >>> java.lang.RuntimeException:
>> org.exolab.castor.mapping.MappingException:
>> >>> Nested error: org.exolab.castor.xml.MarshalException: Attribute
>> >> "xmlns:xsi"
>> >>> must be declared for element type "mapping".{File: [not available];
>> line:
>> >> 7;
>> >>> column: 74}
>> >>>
>> >>>
>> >>>
>> >>> I don't quite understand this error.  "xmlns:xsi" is clearly  defined
>> in
>> >> the
>> >>> mapping element in castor.xml.  Do any of you know what I'm doing
>> wrong?
>> >>> Any ideas at all?  I think this is one those things that's probably
>> >> simple
>> >>> to fix, but I've just been staring at it too long, and I'm not seeing
>> the
>> >>> solution.  Thanks!
>> >>>
>> >> ---------------------------------------------------------------------
>> >> To unsubscribe from this list, please visit:
>> >>
>> >>    http://xircles.codehaus.org/manage_email
>> >>
>> >>
>> >>
>> >
>>
>> ---------------------------------------------------------------------
>> To unsubscribe from this list, please visit:
>>
>>    http://xircles.codehaus.org/manage_email
>>
>>
>>
>

Reply via email to