- From: Kevin Braun <kbraun@obj-sys.com>
- Date: Fri, 06 Nov 2009 14:30:11 -0500
- To: kennardconsulting <richard@kennardconsulting.com>
- CC: xmlschema-dev@w3.org
I'm not quite sure what you are asking. Are you trying to restrict how your schema can be extended, or are you trying to restrict what is allowed in an instance document? Perhaps you have a conceptual misunderstanding? Note that <xs:schema ...> <xs:element name="foo"/> <xs:element name="bar"/> </xs:schema> is not the same as <xs:schema ...> <xs:choice> <xs:element name="foo"/> <xs:element name="bar"/> </xs:choice> </xs:schema> (which isn't legal btw). That is, the children of your <schema> element do not represent a model for your instance documents, which is perhaps how you are thinking of it? Rather, they declare the elements, attributes, and types according to which an instance document may be validated. (Note by the way, that there are different approaches to validating documents against schemas, see http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/structures.html#validation_outcome). I don't believe you can prevent someone from including your schema document into theirs while at the same time adding more global elements, if that's what you are trying to avoid. Kevin -- Objective Systems, Inc. REAL WORLD ASN.1 AND XML SOLUTIONS Tel: +1 (484) 875-9841 Fax: +1 (484) 875-9830 Toll-free: (877) 307-6855 (USA only) http://www.obj-sys.com On 11/6/2009 1:58 AM, kennardconsulting wrote: > Hi guys, > > I'm generating a bunch of XML Schemas that look roughly like: > > <xs:schema ...> > <xs:element name="foo"/> > <xs:element name="bar"/> > </xs:schema> > > You can see the actual ones http://metawidget.org/xsd here . My question > is, this schema allows me to declare 'foo' and 'bar' in my XML document, but > doesn't restrict me declaring, say, 'baz'. I was expecting something like... > > <xs:schema final="#all"> > > ....so that I could 'close' the set of possible xs:element names. Or maybe > that the set was closed by default and I'd need... > > <xs:schema ...> > <xs:element name="foo"/> > <xs:element name="bar"/> > <xs:any /> > </xs:schema> > > ....to make it open. But instead the set of top-level xs:element names > appears 'open' by default and I can't find a way to close it? I have looked > all over the specs and in this forum, sorry if I'm being dumb. > > Regards, > > Richard. >
Received on Friday, 6 November 2009 19:32:40 UTC