Project |
Implementing XML Schema 1.1 overriding component definitions (<xs:override>) |
|
Student Name |
Udayanga Wickrmasinghe |
|
mastershield2007@gmail.com |
|
|
TimeZone |
GMT +5.30 |
|
Apache Xerces2-J consists of a set of standards compliant XML parsers and a [1] XML Schema processor which are built on top of a complete framework(XNI) for building parser components and configurations that is extremely modular. Although Xerces XML Schema processor supports more than the minimal requirement under W3C XML Schema 1.1 [2] specification some vital schema component support is still to be realized. This project tries to implement one such requirement, namely xs:override support for XML Schema1.1 . |
XML schema specification version 1.1 specifies syntax and semantics of “Overriding component definitions<override>”\[3\] or xs:override, under “Schemas and Namespaces: Access and Composition” . The new component definition is a powerful addition to the XML schema composition framework which tries to mitigate some of the constraints present in similar constructs such as xs:redefine or <redefine> schema components. The <redefine> construct defined in “Including modified component definitions (<redefine>) “\[4\] on XMLSchema specification is useful in schema evolution and versioning. It can be used only when there exists some restriction or extension relation between the old component and the new redefined component. But there are occasions when the schema author simply wants to replace old components with new ones without any constraint. Also, existing XSD processors have implemented conflicting and non-interoperable interpretations of <redefine>. And to add to the the inflexibility , <redefine> construct is declared •deprecated• in XML Schema 1.1 \[2\]. Hence as mentioned in the beginning , <override> construct tries to avoid these bottlenecks and allow unconstrained replacement as and when needed. |
<override id = ID schemaLocation = anyURI {any attributes with non-schema namespace . . .} > Content: (annotation | (simpleType | complexType | group | attributeGroup | element | attribute | notation))* </override> |
1.override only applies if the schema component within <xs:override> exists in the overridden schema (corresponding to the respective schema Location defined). If this condition is not true, there’s no effect on the overriden schema location and overriding grammer won’t exist in the final schema representation. |
2. a)Each and every <override> schema information element would be subjected to “override transformation”[5] . However when target namespaces of overriding and overridden schemas don’t match “chameleon inclusion transformation”[6] is also performed prior to the override transform. Override transformation itself is pervasive and therefore would be applied to <include> information items on the overridden schema.(ie:- if schema A overrides B and B includes C then C will also be overridden accordingly ).Further more override transformation also applies to <override> information items present on the overridden schema by merging the two <override> schema components. |
Circular includes and overrides would end up creating duplicate components that should be flagged as errors . (ie:- if Schema A include B , B override C and C intern include B then we could endup with different versions of B included in both A and C . Versions of B included in A and C will only be considered same if C->B override transformation does not apply ) . . |
This scenario could occur in circular overrides as well (ie:- if schema A overrides B and B overrides A , then if B->A override transformation affects schema A then duplicate errors will occur) . . |
In general if overriding schemas produce same/identical override transformation schema results for inclusion, then they would be considered the same , other wise if the transformation results differ , duplicates will occur .(ie:- If schema A includes B,C and B,C both inturn override D ,then B,C would include same version of D if B->D and C->D override transform doesn’t affect D OR if B,C both have the same override schema components ) |
http://farm3.static.flickr.com/2803/4486137118_3aa3d2bb13_o.jpg
Other sub-compnents , the ”Duplicates Handler” and “Dependency Analyzer” would come in to support the actions executed by “Transformation Manager” . Duplicates handler would provide necessary logic needed to detect duplicates and would try to handle them gracefully. “Dependency Analyzer” is also an important component since it would handle various tasks such as calculating [TargetSet]’s \[3\] of respective override components , supporting decisions of Duplicate Handler (ie:- in circular cases of overrides/includes ), etc . <xs:override> Semantics Component as a whole would be dependent on XSD Handler and vices versa during different stages of schema processing , so that aforementioned tasks can be successfully completed and ultimately the grammar pool is constructed with new <override> schema semantics included . The <override> semanitcs Handler will also keep a connection to the “Override Component Registry” constructed in the initial phases (ie:-construct trees phase) of schema processing ,which would map different <override> components with respective schema Documents that are implicitly/explicitly be affected by them . \\ |
http://farm5.static.flickr.com/4068/4486137116_4cb2ba4dc7_o.jpg
Time Schedule/Duration |
Activity |
March 18 - March 29 |
Initiate ideas ,discuss project details , get feed back on different aspects of the project,etc |
March 29 - April 9 |
preparing project proposals and submission |
April 26 |
GSoc Accepted student proposals announced by Google |
April 26 - May 24 (Community Bonding Period) |
preparation on design aspects,architecture on xs:overide implementaion; preraration on various platform details (ie:-xerces architecture,schema processing,etc) ; prepare development environment; |
May 24 - July 12 |
creating/finalizing necessary API's ; Start coding on xs:override implementation (creating required datastructures/registries ,implementing Trasformation Manager ,etc) |
July 12- July 16 |
Mid term Evaluations - students and mentors submit evaluations |
July 16 - August 9 |
start second phase of coding (implementing other sub components required); integration of xs:override implementation phases (if any) ; writing tests to validate xs:override semantics; |
August 9 - August 16 |
Final week of the project - final code submission on August 16th ; refine/review code ; finalizing documentaion , API docs; |
August 23 |
Final results of GSoc 2010 will be anounced |
_ _
. I have worked on projects related to Apache Axis2 where I developed a tool \[7\](incubating) to extract WS-Policy(ie:-Security Policy) from WS policy compliant SOAP messages. This tool is especially useful in scenarios such as for clients who wish to build compatible client side policy for respective Services who don’t expose their messaging policy explicitly. This experience gave me a great understanding on WS:Security specifications and on mechanisms used by security modules such as Apache Rampart as well. Furthermore i have developed Axis2 Messaging and Service Level Infrastructure for Rubyscript \[8\], so that Ruby Scripts can be exposed and accessed via [WebServices] by clients . |
. I also do have experience involved in projects related to Eclipse plugins, OSGi , XML parsers(this for our internal module DSD2.0\[9\] parser) and Data Mining (ie:-Collaborative Filtering), which got me working in a wide variety of frameworks ,programming/scripting languages such as Java ,C,C++, Javascript,Ruby,etc and under various platforms of Linux and Windows. I am currently involved in implementing a [TupleSpace] based Distributed System framework (which runs on top of a DHT\[distributed hash table\] named [FreePastry] \[opensource implementation of Microsoft Pastry\] ) for our final year project ,which facilitates time and space decoupling as well as content based addressing for messages in a distributed environment \[10\]. I consider my self a motivated computer science enthusiast who is willing to self learn and accept challenges and achieve them to the best of my ability. . |
*\[1\]* [http://www.w3.org/TR/xmlschema-1/#key-fullyConforming] |
*_\[2\]_* [http://www.w3.org/TR/2006/REC-xml11-20060816/] |
*_\[3\]_* [http://www.w3.org/TR/xmlschema11-1/#override-schema] |
*_\[4\]_* [http://www.w3.org/TR/xmlschema11-1/#modify-schema] |
*_\[5\]_* [http://www.w3.org/TR/xmlschema11-1/#override-xslt] |
*_\[6\]_* [http://www.w3.org/TR/xmlschema11-1/#chameleon-xslt] |
*_\[7\]_* [https://wso2.org/repos/wso2/trunk/carbon/components/policy-builder] |
*_\[8\]_* [https://wso2.org/repos/wso2/trunk/carbon/components/jruby/] |
*_\[9\]_* [http://www.brics.dk/DSD/dsd2.html] |
*_\[10\]_* [http://sourceforge.net/projects/bissa/] |