[Home] [By Thread] [By Date] [Recent Entries]

  • To: xml-dev@l...
  • Subject: How do I make a unique key ?
  • From: Dan White <ygor@c...>
  • Date: Wed, 7 Jul 2004 21:27:16 -0400

I think I want to use xs:key as opposed to xs:unique because xs:key 
cannot be NULL.

OK, here's my schema fragment:

	<xs:complexType name="sectorType">
		<xs:sequence>
			<xs:element name="id">
				<xs:simpleType>
					<xs:restriction base="xs:integer">
						<xs:minInclusive value="1"/>
						<xs:maxInclusive value="10"/>
					</xs:restriction>
				</xs:simpleType>
				<xs:key name="sec_id">
					<xs:selector xpath=".//sector"/>
					<xs:field xpath="id"/>
				</xs:key>
			</xs:element>
			<xs:element thing1 …/>
			<xs:element thing2 …/>
			<xs:element thing3 …/>
		</xs:sequence>
	</xs:complexType>

	<xs:element name="sector" type="sectorType" minOccurs="1" 
maxOccurs="10">

There are no more than 10 sectors, numbered 1 thru 10.

But the following XML file comes up valid.  What did I miss ?

<?xml version="1.0" encoding="UTF-8"?>
<foo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:noNamespaceSchemaLocation="foo.xsd">
	<sector>
		<id>1</id>
		<thing1>…</thing1>
		<thing2>…</thing2>
		<thing3>…</thing3>
	</sector>
	<sector>
		<id>2</id>
		<thing1>…</thing1>
		<thing2>…</thing2>
		<thing3>…</thing3>
	</sector>
	<sector>
		<id>1</id>
		<thing1>…</thing1>
		<thing2>…</thing2>
		<thing3>…</thing3>
	</sector>
</foo>


Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member