Stephen, how would you feel about transfering your findings (incl. samples) to
http://docs.codehaus.org/display/CASTOR/HOWTOS This would ease transfer into the HTML docs for me later, once we have resolved this your problem so that everybody is happy (including yourself). This page is a Confluence page, with Confluence being the default Wiki hosted at http//www.codehaus.org. If you are familiar with Wikis in general, things should be familiar to you. Thanks Werner Stephen Winnall wrote: > OK, Werner: you asked for it ;-) > > It may also be for my benefit: I hope someone can suggest how to improve > this. > As a solution, all that speaks for it is that it works. Elegant, it is > not. What I *wanted* > to do was define the RDF schema and only have references from the the DC > schema > to the RDF one. The way it worked out, each references the other. Eugh. > > OK. First of all the DC schema, because it's alright in itself. > > <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" > xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" > xmlns:dc="http://purl.org/dc/elements/1.1/" > targetNamespace="http://purl.org/dc/elements/1.1/"> > > <xsd:annotation> > <xsd:documentation xml:lang="en" > source="http://xml.vimia.com/cms/sitetree/meta-dc.xsd"> > Based on dcmes-dc.xsd from www.dublincore.org and modified > to allow processing with > Castor. </xsd:documentation> > </xsd:annotation> > > <!-- note this reference to the RDF schema: it's a backward > reference, so I would regard it > as kosher. --> > > <!-- Import the RDF namespace schema for rdf:resource --> > <xsd:import namespace="http://www.w3.org/1999/02/22-rdf-syntax-ns#" > schemaLocation="meta-rdf.xsd" /> > > <!-- this is not necessary: all the following complexTypes could extend > rdf:commonType directly, but it gives me an abstract class in Java > which will be useful as a supertype of all the other DC classes --> > > <xsd:complexType name="abstractRoot" abstract="true"> > <xsd:complexContent> > <xsd:extension base="rdf:commonType"> </xsd:extension> > </xsd:complexContent> > </xsd:complexType> > > <!-- I define different types for each kind of element --> > > <xsd:complexType name="titleType"> > <xsd:complexContent> > <xsd:extension base="dc:abstractRoot"> </xsd:extension> > </xsd:complexContent> > </xsd:complexType> > > <xsd:complexType name="creatorType"> > <xsd:complexContent> > <xsd:extension base="dc:abstractRoot"> </xsd:extension> > </xsd:complexContent> > </xsd:complexType> > > <!-- and as many further types as are needed to support the DC types > --> > > <!-- define an element for each kind of DC tag --> > > <xsd:element name="title" type="dc:titleType" /> > > <xsd:element name="creator" type="dc:creatorType" /> > > <!-- and as many further element definitions as are needed ... --> > > </xsd:schema> > > > Now for the nasty RDF schema, which unfortunately references the DC schema: > > > <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" > xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" > xmlns:dc="http://purl.org/dc/elements/1.1/" > targetNamespace="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> > > <xsd:annotation> > <xsd:documentation xml:lang="en" > source="http://xml.vimia.com/cms/sitetree/meta-rdf.xsd"> > Based on dcmes-rdf.xsd from www.dublincore.org and modified > to allow processing > with Castor. > </xsd:documentation> > </xsd:annotation> > > > <!-- Import the XML namespace schema for xml:lang --> > <xsd:import namespace="http://www.w3.org/XML/1998/namespace" > schemaLocation="http://www.w3.org/2001/xml.xsd" /> > > <!-- this is a forward reference to the DC schema, which contains a > backward reference to > here. If this were the only inelegant bit, it would be OK. But > see below for worst stuff... --> > > <!-- Import the namespace schema for dc:* --> > <xsd:import namespace="http://purl.org/dc/elements/1.1/" > schemaLocation="meta-dc.xsd" /> > > <xsd:element name="RDF"> > <xsd:complexType> > <xsd:sequence> > <xsd:element ref="rdf:Description" minOccurs="0" > maxOccurs="unbounded"/> > </xsd:sequence> > </xsd:complexType> > </xsd:element> > > <!-- this is horrible. Description belongs to the RDF namespace, so > that element is in the right > place here. But the references to stuff from the DC namespace is > awful. If substitutionGroups > worked, the DC stuff could be encapsulated in the DC schema --> > > <xsd:element name="Description"> > <xsd:complexType> > <xsd:choice minOccurs="0" maxOccurs="unbounded"> > <xsd:element ref="dc:title" /> > <xsd:element ref="dc:creator" /> > <!-- etc ---> > </xsd:choice> > <xsd:attribute ref="rdf:about" use="optional" /> > </xsd:complexType> > </xsd:element> > > <xsd:complexType name="commonType"> > <xsd:attribute ref="xml:lang" use="optional" /> > <xsd:attribute ref="rdf:resource" use="optional" /> > </xsd:complexType> > > <xsd:attribute name="about" type="xsd:anyURI" /> > > <xsd:attribute name="resource" type="xsd:anyURI" /> > > </xsd:schema> > > There are other permutations which are valid XML, but this is the only > solution I have found which > Castor's source generator works with. If there are any XSD wizards out > there who would like to > comment, I'd be very grateful for the feedback. > > If there's any way that the source generator could be made to handle > substitutionGroups, the above > would be a lot cleaner. > > Regards > Steve > > > On 8 May 2006, at 20:50, Werner Guttmann wrote: > >> Yes, please .. ;-). For the benefit of everybody else, please do so >> ... ;-). >> >> Werner >> >> Stephen Winnall wrote: >>> I've found a solution to this problem. It's not pretty, but it seems to >>> work. If anyone is interested in the details, I'll >>> post the two schemas. >>> >>> Steve >>> >>> On 7 May 2006, at 18:16, Stephen Winnall wrote: >>> >>>> When you have documents which contain multiple namespaces, is there a >>>> way to define XML Schemas so that Castor can handle those documents? I >>>> want to be able to read documents like the following: >>>> >>>> <?xml version="1.0"?> >>>> <!DOCTYPE rdf:RDF PUBLIC "-//DUBLIN CORE//DCMES DTD 2002/07/31//EN" >>>> >>>> "http://dublincore.org/documents/2002/07/31/dcmes-xml/dcmes-xml-dtd.dtd"> >>>> >>>> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" >>>> xmlns:dc="http://purl.org/dc/elements/1.1/"> >>>> <rdf:Description >>>> rdf:about="http://www.ilrt.bristol.ac.uk/people/cmdjb/"> >>>> <dc:title>Dave Beckett's Home Page</dc:title> >>>> <dc:creator>Dave Beckett</dc:creator> >>>> <dc:publisher>ILRT, University of Bristol</dc:publisher> >>>> <dc:date>2002-07-31</dc:date> >>>> </rdf:Description> >>>> </rdf:RDF> >>>> >>>> Yup, it's Dublin Core again ;-) Clearly two schemas are needed, one >>>> for the RDF (rdf:) and one for the DC (dc:) namespace. The schemas >>>> from the Dublin Core website for handling this stuff work perfectly in >>>> Oxygen when I compose example files, but since they make extensive use >>>> of substitution groups, the Castor source generator cannot handle them. >>>> >>>> I've spent some time trying to produce Castor-friendly schemas >>>> equivalent to the official ones, but I don't seem to be getting >>>> anywhere. This is due on the one hand to my limited knowledge of XML >>>> Schema, but I am beginning to wonder whether there is a way to do this >>>> with Castor. >>>> >>>> Can anyone give me some guidance on this, please? >>>> >>>> Steve >>>> >>>> >>>> ------------------------------------------------- >>>> If you wish to unsubscribe from this list, pleasesend an empty message >>>> to the following address: >>>> >>>> [EMAIL PROTECTED] >>>> ------------------------------------------------- >>>> >>> >>> >>> ------------------------------------------------- >>> If you wish to unsubscribe from this list, pleasesend an empty message >>> to the following address: >>> >>> [EMAIL PROTECTED] >>> ------------------------------------------------- >>> >>> >> >> >> ------------------------------------------------- >> If you wish to unsubscribe from this list, please >> send an empty message to the following address: >> >> [EMAIL PROTECTED] >> ------------------------------------------------- >> > > > ------------------------------------------------- > If you wish to unsubscribe from this list, pleasesend an empty message > to the following address: > > [EMAIL PROTECTED] > ------------------------------------------------- > > ------------------------------------------------- If you wish to unsubscribe from this list, please send an empty message to the following address: [EMAIL PROTECTED] -------------------------------------------------

