Hi Jane,
We have been doing some work with the DC XML Schema developed for the OAI
protocol (http://www.openarchives.org/OAI/1.1/dc.xsd). We have made some
modifications to this schema to allow for more flexibility, similar to what
you have described below. Our schema is essentially:
<element name="title" type="dc:propertyEltType"/>
<complexType name="propertyEltType" mixed="true">
<sequence minOccurs="0" maxOccurs="unbounded">
<any namespace="##other" processContents="lax"/>
</sequence>
<anyAttribute namespace="##other" processContents="lax"/>
</complexType>
The complete schema can be found at:
http://dli.grainger.uiuc.edu/publications/oai_schema/oai_dc_new.xsd
One thing we haven't entirely settled on is whether the namespace attribute
of the <any> and <anyAttribute> tags should be ##any or ##other.
Essentially, should we allow DC tags to be nested inside of other DC tags?
The usual caveats about works in progress apply.
Tom
--
Thomas G. Habing
Research Programmer, Digital Library Projects
University of Illinois at Urbana-Champaign
155 Grainger Engineering Library Information Center, MC-274
[log in to unmask], (217) 244-4425
http://dli.grainger.uiuc.edu
Jane Hunter wrote:
>
> I'm in the process of developing a metadata schema (aka application
> profile) for an organisation which wants to use, but further restrict,
> some of the DC elements.
>
> The XML Schema in the document 'An XML Encoding of Simple Dublin Core
> Metadata" (http://www.dublincore.org/documents/2001/09/20/dcmes-xml/)
> declares the DC elements using anonymous types:
>
> For example:
>
> <element name='dc:title'>
> <complexType mixed='true'>
> <attribute name='xml:lang' type='string' use='optional'/>
> </complexType>
> </element>
>
> This approach allows implementors to reference DC elements but not to
> redefine or restrict them. Within XML Schema, it is only possible to
> refine or restrict 'types' not elements. So there is no way to create
> new application-specific elements based on DC elements without the
> explicit definition of DCMES 'types'. What is required is something
> like the following:
>
> <complexType name="dc:title" mixed="true">
> <sequence>
> <any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
> </sequence>
> <attribute ref='xml:lang'/>
> </complexType>
>
> <element name="dc:title" type="dc:title"/>
>
> Then implementors can do things like redefining "title" in their own
> namespace:
>
> <complexType name="title">
> <complexContent>
> <restriction base="dc:title">
> <sequence>
> <element name="mainTitle" type="string"/>
> <element name="secondaryTitle" type="string"/>
> </sequence>
> <attribute ref='xml:lang'/>
> <restriction>
> <complexContent>
> <complexType>
>
> Would it be possible to modify the XML Schema at:
> http://dublincore.org/documents/2001/09/20/dcmes-xml/dcmes-xml-xsd.xsd
>
> so that named types corresponding to the DCMES are explicitly defined?
>
> regards,
> jane
> +-----------------------------+-------------------------------------+
> | Jane Hunter | Senior Research Scientist |
> | DSTC Pty Ltd | Distributed Systems Technology CRC |
> | Level 7, GP South | Tel : +61 7 3365 4310 |
> | University of Queensland | Fax : +61 7 3365 4311 |
> | Queensland 4072, Australia | Email : [log in to unmask] |
> +-----------------------------+-------------------------------------+
|