OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.


Help: OASIS Mailing Lists Help | MarkMail Help



   Re: [xml-dev] A practical question about XML Schema

[ Lists Home | Date Index | Thread Index ]

"Adam van den Hoven" <list@adamvandenhoven.com> writes:

> I'm using XLink as the the basis for my schemas which means that I have
> a number of arcs and locators around. They can easily use the following
> types:
>  <xsd:complexType name="locatortype">
>   <xsd:attribute ref="xlink:type" use="optional" fixed="locator"/>
>   <xsd:attribute ref="xlink:href" use="required"/>
>   <xsd:attribute ref="xlink:role" use="required"/>
>   <xsd:attribute ref="xlink:label" use="required"/>
>   <xsd:attribute ref="xlink:title"/>
>   <xsd:attribute ref="xml:lang"/>
>  </xsd:complexType>
>  <xsd:complexType>
Presume you mean <xsd:complexType name="arctype">
>   <xsd:attribute ref="xlink:type" use="optional" fixed="arc" />
>   <xsd:attribute ref="xlink:arcrole" use="required"/>
>   <xsd:attribute ref="xlink:to" use="optional"/>
>   <xsd:attribute ref="xlink:from" use="optional"/>
>   <xsd:attribute ref="xlink:title"/>
>  </xsd:complexType>
> What I want to be able to do is say that the <content> element uses the
> locatortype and has a fixed role of www.foo.com/bar.

So define a restriction of locatortype as follows:

<xsd:complexType name="barLocatorType">
  <xsd:restriction base="locatortype">
   <xsd:attribute ref="xlink:role" use="required" fixed="www.example.com/bar"/>

and use that for the type of <content>

I suspect this isn't perfect, since it means you still have to write

  <content xlink:role="www.example.com/bar" . . .

If that's _not_ what you want, then you need to step back another
step, define locatorBaseType as abstract and w/o the use="required" in
some places, then derive locatorType (for explicit locators) from it
with the use="required" put in, and barLocatorType as well, w/o the
use="required" for xlink:role -- then you can write <content> w/o the

> The <use> element
> is uses the arctype and its to attribute is required, its from is
> forbidden and the arcrole can be any one of these X things. 

Again, derive a type by restriction from arctype, e.g.

<xsd:complexType name="toOnlyArcType">
  <xsd:restriction base="arctype">
   <xsd:attribute ref="xlink:to" use="required"/>
   <xsd:attribute ref="xlink:from" use="prohibited"/>
   <xsd:attribute ref="xlink:arcrole" use="required">
     <xsd:restriction base="[whatever]">
      <xsd:enumeration value="X..."/>
      <xsd:enumeration value="X..."/>
      <xsd:enumeration value="X..."/>
      <xsd:enumeration value="X..."/>

and use that.

Hope this helps.

  Henry S. Thompson, HCRC Language Technology Group, University of Edinburgh
          W3C Fellow 1999--2002, part-time member of W3C Team
     2 Buccleuch Place, Edinburgh EH8 9LW, SCOTLAND -- (44) 131 650-4440
	    Fax: (44) 131 650-4587, e-mail: ht@cogsci.ed.ac.uk
		     URL: http://www.ltg.ed.ac.uk/~ht/
 [mail really from me _always_ has this .sig -- mail without it is forged spam]


News | XML in Industry | Calendar | XML Registry
Marketplace | Resources | MyXML.org | Sponsors | Privacy Statement

Copyright 2001 XML.org. This site is hosted by OASIS