[Mono-list] RE: Xml Schema

A Rafael D Teixeira rafaelteixeirabr@hotmail.com
Tue, 26 Mar 2002 15:39:23 -0300


>From: "Dwivedi , Ajay Kumar" <AjayKumar.Dwivedi@dresdner-bank.com>
>To: "'Mono Hackers List (E-mail)'" <mono-list@ximian.com>
>Subject: [Mono-list] RE: Xml Schema
>Date: Tue, 26 Mar 2002 05:55:19 -0000
>
>	Also, there are a few questions in my mind. If someone can answer
>them, I would be very grateful. (I know they are too basic, but i am an
>illiterate :(
>	1. What is XML Schema compliation (XmlSchema.Compile())? It looks
>like some validation, but why is this compilation done only on schema's and
>not all xml's.

First Compilation does occur for XSLT Templates, too. To compile a Schema is 
to dispose all the rules it embodies in a manner that should be very 
efficient to validate some document with it. For instance you can construct 
a SAX-like parser that rejects any XML input not of the proper form, more 
typical is to have a generic parser with a "database" of rules, or a 
table-driven state machine.

>	2. What do we do if we find some invalid members. Say someone
>programatically adds an invalid element . Do we remove these elements from
>the schema during compilation/validation?

During compilation you´ll have to throw exceptions for elements of the 
schema that does not follow de Schema´s schema (you can think of running the 
a validator on the schema using Schema.XSD, but probably implemented in 
hardcoded form).

Validation is done in truth by another class XMLValidatingReader if my 
memory doesn´t fail me.

>	3. What is the role of datatypes? I did not find any need for them
>yet. None of them are public, so I am assuming they are used internally
>during validation etc.

Yes they are usefull during validation. Schema datatypes is strong-typing 
for xml:

Let´s say you have this definition for a attribute of a element "message":
  <xs:attribute name="priority" type="xs:positiveInteger">

When you have to parse xml snippets of the form:
  <message priority="-1" />
or
  <message priority="A" />
or
  <message priority="1.23" />

you´ll have to throw some exception or fire some error event, IN THE 
VALIDATING PARSER, not in the schema class proper.

Happy Hackings, to you too

Rafael Teixeira
Brazilian Developer


_________________________________________________________________
Chat with friends online, try MSN Messenger: http://messenger.msn.com