Next in thread →
Next in month →
Re: [xml-dev] A practical question about XML Schema
"Adam van den Hoven" <> 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: URL: http://www.ltg.ed.ac.uk/~ht/ [mail really from me _always_ has this .sig -- mail without it is forged spam]
Next in thread →
Next in month →