RE: Creating library schemas which only expose a single document element

I agree with Michael on this.  Another factor, which may or may not be of 
interest in your case, is that in principle you can do validations of 
portions of your documents, presuming they are described by global element 
descriptions.  Indeed, one of the reasons the schema WG did not call out a 
separate marking for root elements, is that we would have had to invent a 
second processing model to ignore it in the case where you really only 
wanted to validate part of a document.  Why would you want to do that?  As 
examples:  you might want to validate only the body of a soap message, or 
you might in an editor want to revalidate only the portions recently 
changed.  One thing to watch in doing such things are identity constraints 
and ID/IDREF, which are enforced within the scope of the current 
validation.

Anyway, for all that local element declarations are syntactically 
convenient and occasionally the right thing semantically, it's globals 
that tend to be more robust for many purposes.  Globals also are the 
constructs that roughly mimic DTD declarations.

FWIW:  the schema WG is also aware that there are some good uses for 
designating document roots in a schema document, and we were discussing 
the pros and cons as recently as last week's face-to-face meeting.

--------------------------------------
Noah Mendelsohn 
IBM Corporation
One Rogers Street
Cambridge, MA 02142
1-617-693-4036
--------------------------------------








"Michael Kay" <mike@saxonica.com>
Sent by: xmlschema-dev-request@w3.org
05/23/05 04:17 AM

 
        To:     "'Fraser Crichton'" <fraser.crichton@solnetsolutions.co.nz>, 
<xmlschema-dev@w3.org>
        cc:     (bcc: Noah Mendelsohn/Cambridge/IBM)
        Subject:        RE: Creating library schemas which only expose a single document element


When you eventually come to write schema-aware queries or stylesheets, 
you'll find that it's a good idea to make most of your elements global.
 
I would be inclined not to distort the schema design for this purpose. 
Find some other way of checking that the top-level element in the instance 
document is the one you want it to be.
 
Michael Kay
http://www.saxonica.com/

From: xmlschema-dev-request@w3.org [mailto:xmlschema-dev-request@w3.org] On Behalf Of Fraser Crichton
Sent: 23 May 2005 03:17
To: xmlschema-dev@w3.org
Subject: Creating library schemas which only expose a single document element

Hi,
This kind of a follow up to something I posted to XML-DEV -Validating against the correct root element using library schemas http://lists.xml.org/archives/xml-dev/200505/msg00263.html (BTW thanks, Michael and Henry, for getting back to me).
If I'm creating a set of library schemas where I want to enforce that 
particular document / message schemas are valid and that no fragments of 
documents are valid  it seems I have two approaches  - 

1) I adopt a strict venetian blind approach i.e. there are no global 
element declarations in my library schemas and only a Russian doll 
approach in my message / document schemas to enforce that there is only 
one valid root element (however that way I can't create any reusable 
elements just reusable types).

2) I use xsd:group to hide my global elements but get reuse from them by 
referencing the groups.

I have a some questions -

Would the xsd:group approach just be a dirty hack? 

Is there any reason why OASIS have not adopted xsd:group (sorry to keep 
banging on about OASIS but the New Zealand government are looking at a 
number of their standards ;-) )?

Cheers,

Fraser



Attention: This email may contain information intended for the sole use of 
the original recipient. Please respect this when sharing or disclosing 
this email's contents with any third party. If you believe you have 
received this email in error, please delete it and notify the sender or 
postmaster@solnetsolutions.co.nz as soon as possible. The content of this 
email does not necessarily reflect the views of SolNet Solutions Ltd. 

Received on Monday, 23 May 2005 12:47:35 UTC