W3C home > Mailing lists > Public > xmlschema-dev@w3.org > March 2004

Re: determine root element in the xml from schema

From: Mik Lernout <mik@futurestreet.org>
Date: Sun, 07 Mar 2004 13:10:09 +0100
Message-ID: <404B1121.40505@futurestreet.org>
To: Michael Kay <mhk@mhk.me.uk>
Cc: "'Lingzhi Zhang'" <lzhang@cse.ogi.edu>, "'dev xmlschema'" <xmlschema-dev@w3.org>

I do agree with Stephen/Lingzhi Zhang here: in a normal use case of 
XMLSchema you will want to confine validation to only one valid 
root-element. The only reason to register multiple global elements would 
be to be able to use them when importing/including the schema, when 
refering to the element from within the schema, ... There is a big 
secuity / application integrity aspect that is touched here as well: it 
is pretty typical for applications to use XMLSchema for validation and 
it would be very easy to bypass this validation completetly by using a 
root element that is also registered globally but not "intended" to be 
used as a root element.

Michael: I agree with you that a schema should be able to match more 
than one instance document, but I do also believe that it should only be 
able to match only one "type" of instance document. If you have a look 
at the "Purchase Order Schema" in the primer spec, do you think it is 
the intention of the schema writer to be able to validate 
"<comment>abc</comment>" as a valid instance of this schema? Or that the 
application that will validate this will be constructed to be able to 
cope with this instance?
 
Maybe I am completely off-base/confused here and this kind of 
"unpredictable behaviour" is intended by the creators of the spec, but 
then don't we have a serious communication problem in how the spec is 
being read by the people who are writing XMLSchema validators and 
applications? If this would be the case it would seem for example 
logically to be able to mark, when validating, the root-element you wish 
to validate against like in: validator.validate(po.xsd, 
'purchaseOrder'). Why isn't this the case?

How do other people feel about this?

Mik

Michael Kay wrote:

>You are correct to say that both these instance documents are valid against
>this schema.
>
>The word "ambiguity" has a fairly technical meaning when discussing
>grammars, and it's not considered an "ambiguity" that more than one instance
>document should match the same schema. In fact, it's a rather essential
>feature.
>
>But it is sometimes a usability problem that you can't easily constrain what
>the document element should be (it can be any element that is globally
>declared).
>
>Michael Kay
>
># -----Original Message-----
># From: xmlschema-dev-request@w3.org [mailto:xmlschema-dev-request@w3.org]
># On Behalf Of Lingzhi Zhang
># Sent: 06 March 2004 23:41
># To: dev xmlschema
># Subject: determine root element in the xml from schema
># 
># 
># 
># Hi,
># 
># I am confused of how to determine root element in the xml from a given
># schema. It seems to me there is "ambiguity".
># 
># Say if we have schema like:
># <schema ...>
>#     <element name="A">
># 	<complexType>
># 	...
># 	    <element ref="B"/>
># 	...
># 	<complexType>
>#     </element>
>#     <element name="B"/>
># <schema>
># 
># Either xml:
># <A><B></B></A>
># 
># or xml:
># <B></B>
># 
># would be valid xml against the schema. So either A or B could be root
># element in the xml. By just looking at the schema without looking at xml,
># we can't tell which on would be root element in the xml. However, if a
># user defines that schema, he/she usually means that A is the root. Isn't
># it "ambiguous"?
># 
># Stephen
>
>
>.
>
>  
>
Received on Sunday, 7 March 2004 07:27:37 UTC

This archive was generated by hypermail 2.3.1 : Wednesday, 5 February 2014 23:40:23 UTC