Great. Feel free to ask questions whenever such arise. Werner
Geoffrey Fairchild 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 >> >> >> > --------------------------------------------------------------------- To unsubscribe from this list, please visit: http://xircles.codehaus.org/manage_email

