- From: Henry S. Thompson <ht@cogsci.ed.ac.uk>
- Date: 31 Mar 2001 13:13:09 +0100
- To: "Roger L. Costello" <costello@mitre.org>
- Cc: xmlschema-dev@w3.org
"Roger L. Costello" <costello@mitre.org> writes: > [Sorry to be so stupid about this issue. The differences that I am > getting in the schema validators has thrown me into a state of > confusion. An answer to below example will straighten me out.] > > Example. I have 4 schemas, all in the same namespace > (http://www.camera.org). The schemas are: Camera.xsd, Nikon.xsd, > Olympus.xsd, and Pentax.xsd. The Camera schema includes the other three > schemas. Here's the four schemas (note the different values for > elementFormDefault in the schemas): > > ------------------------------------------------------------------ > Camera.xsd > > <?xml version="1.0"?> > <xsd:schema xmlns:xsd="http://www.w3.org/2000/10/XMLSchema" > targetNamespace="http://www.camera.org" > xmlns="http://www.camera.org" > elementFormDefault="qualified"> > <xsd:include schemaLocation="Nikon.xsd"/> > <xsd:include schemaLocation="Olympus.xsd"/> > <xsd:include schemaLocation="Pentax.xsd"/> > <xsd:element name="camera"> > <xsd:complexType> > <xsd:sequence> > <xsd:element name="body" type="body_type"/> > <xsd:element name="lens" type="lens_type"/> > <xsd:element name="manual_adapter" > type="manual_adapter_type"/> > </xsd:sequence> > </xsd:complexType> > </xsd:element> > </xsd:schema> > ------------------------------------------------------------------ > > Nikon.xsd > > <?xml version="1.0"?> > <xsd:schema xmlns:xsd="http://www.w3.org/2000/10/XMLSchema" > targetNamespace="http://www.camera.org" > xmlns="http://www.camera.org" > elementFormDefault="unqualified"> > <xsd:complexType name="body_type"> > <xsd:sequence> > <xsd:element name="description" type="xsd:string"/> > </xsd:sequence> > </xsd:complexType> > </xsd:schema> > ------------------------------------------------------------------ > > Olympus.xsd > > <?xml version="1.0"?> > <xsd:schema xmlns:xsd="http://www.w3.org/2000/10/XMLSchema" > targetNamespace="http://www.camera.org" > xmlns="http://www.camera.org" > elementFormDefault="qualified"> > <xsd:complexType name="lens_type"> > <xsd:sequence> > <xsd:element name="zoom" type="xsd:string"/> > <xsd:element name="f-stop" type="xsd:string"/> > </xsd:sequence> > </xsd:complexType> > </xsd:schema> > ------------------------------------------------------------------ > > Pentax.xsd > > <?xml version="1.0"?> > <xsd:schema xmlns:xsd="http://www.w3.org/2000/10/XMLSchema" > targetNamespace="http://www.camera.org" > xmlns="http://www.camera.org" > elementFormDefault="unqualified"> > <xsd:complexType name="manual_adapter_type"> > <xsd:sequence> > <xsd:element name="speed" type="xsd:string"/> > </xsd:sequence> > </xsd:complexType> > </xsd:schema> > ------------------------------------------------------------------ > > The Camera and Olympus schemas indicates that all of their elements must > be qualified. The Nikon and Pentax schemas indicates that all their > local elements must not be qualified. Based upon that, I created this > instance document: > > <?xml version="1.0"?> > <my:camera xmlns:my="http://www.camera.org" > xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance" > xsi:schemaLocation="http://www.camera.org Camera.xsd"> > <my:body> > <description>Ergonomically designed blah blah</description> > </my:body> > <my:lens> > <my:zoom>300mm</my:zoom> > <my:f-stop>1.2</my:f-stop> > </my:lens> > <my:manual_adapter> > <speed>1/10,000 sec to 100 sec</speed> > </my:manual_adapter> > </my:camera> > > Note that the description element is a local element declared in > Nikon.xsd and is not qualified, per elementFormDefault="unqualified" in > Nikon.xsd. Ditto for the speed element. The other elements are > qualified per elementFormDefault="qualified" in Camera.xsd and > Olympus.xsd. > > Here's the results of validating Camera.xml: > > XSV - says it's valid (as does xerces and Oracle) > XML Spy - says it's NOT valid, "This file is not valid: Mandatory > element my:description expected in place of description". > > Okay, who's right - XSV or XML Spy? [My bet's on Henry] /Roger Not surprisingly, I think XSV is correct. The spec. [1] makes clear that what gets <include>d is components, not text, and those components are 'constructed' in the context of the <include>d schema document, so the <include>d schema document's defaults are operative. ht [1] http://www.w3.org/TR/xmlschema-1/#layer2 -- Henry S. Thompson, HCRC Language Technology Group, University of Edinburgh W3C Fellow 1999--2001, 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/
Received on Saturday, 31 March 2001 07:13:08 UTC