[
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:complexContent>
<xsd:restriction base="locatortype">
<xsd:attribute ref="xlink:role" use="required" fixed="www.example.com/bar"/>
</xsd:restriction>
</xsd:complexContent>
</xsd:complexType>
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
xlink:role.
> 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:complexContent>
<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:simpleType>
<xsd:restriction base="[whatever]">
<xsd:enumeration value="X..."/>
<xsd:enumeration value="X..."/>
<xsd:enumeration value="X..."/>
<xsd:enumeration value="X..."/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:restriction>
</xsd:complexContent>
</xsd:complexType>
and use that.
Hope this helps.
ht
--
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]
|