Dear Wiki user, You have subscribed to a wiki page or wiki category on "Xerces Wiki" for change notification.
The "gsoc_xs_override_proposal" page has been changed by uswick. http://wiki.apache.org/xerces/gsoc_xs_override_proposal?action=diff&rev1=33&rev2=34 -------------------------------------------------- . 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 . - . Implementation of these components need to take into account cyclic dependencies which could occur in <override> transformations. As discussed in the beginning these scenarios occur when the overriding paths go through a cycle of dependencies (ie:- include's) ,especially since <override> sematics inturn apply for included schemas. Each time “Transformation Manager” finds an included schama component it would transform that into a <override> component with "schemaLocation" being that of the included schema.However after applying necessary override transformations ,the respective <override> components(residing in overriding schema) would be replaced by <include>s pointing to the overriden schemas. For example if schema A overrides B which includes C and C inturn overrides A , the transformations would happen as follows. A will include B' (transformed/overriden version of B. ) , B' includes C' (transformed/overriden version of C) , C' includes A' (transformed/overriden version of A with merged overrides of both A and C ) and also similarly A' incl. B'' '' ,B'''' incl. C'''' , C '''' incl. A'' '' and so on. However at the point of including A' , if “Transformation Manager” sees that it differes with A then it would handle name collisions via "”Duplicates Handler” logic. Otherwise it would continue to the point of including A"'' , where it would be notified of a cyclic dependency via “Dependency Analyzer” and would stop processing the cycle(since no point continuing the same cycle) and continue with the schema processing work that yet to be completed. + . Implementation of these components need to take into account cyclic dependencies which could occur in <override> transformations. As discussed in the beginning these scenarios occur when the overriding paths go through a cycle of dependencies (ie:- include's) ,especially since <override> sematics inturn apply for included schemas. Each time “Transformation Manager” finds an included schama component it would transform that into a <override> component with "schemaLocation" being that of the included schema.However after applying necessary override transformations ,the respective <override> components(residing in overriding schema) would be replaced by <include>s pointing to the overriden schemas. For example if schema A overrides B which includes C and C inturn overrides A , the transformations would happen as follows. A will include B' (transformed/overriden version of B. ) , B' includes C' (transformed/overriden version of C) , C' includes A' (transformed/overriden version of A with merged overrides of both A and C ) and also similarly A' incl. B" ,B" incl. C" , C" incl. A" and so on. However at the point of including A' , if “Transformation Manager” sees that it differes with A then it would handle name collisions via "”Duplicates Handler” logic. Otherwise it would continue to the point of including A" , where it would be notified of a cyclic dependency via “Dependency Analyzer” and would stop processing the cycle(since no point continuing the same cycle) and continue with the schema processing work that yet to be completed. . Following is a very simplified data flow diagram indicating the general control flow of schema processing with the proposed <override> extension in place.As described earlier this shows how our proposed <override> Handler extension works with XSD Handler to produce desired schema grammer with necessary <override> sematics info applied. - . . . {{http://farm5.static.flickr.com/4068/4486137116_4cb2ba4dc7_o.jpg}} + . '''''. . {{http://farm5.static.flickr.com/4068/4486137116_4cb2ba4dc7_o.jpg}} ''''' - . . + . '''''. ''''' == Things I have Done So far == - . Since this project is about implementing a XMLSchema 1.1 specification construct , I had to go through this specification docs several times to understand the exact structure and semantics of the component I’m going to implement which I think is of vital importance when it comes to the design and implementation. Previous discussions (that has happened in Xerces-j-dev mail archives) about this xs:override support , online articles and tutorials also helped a lot in this cause. I also interacted with Xerces mailing list (especially with my mentor) to clarify critical points and implementation details. Since knowing Xerces and it’s internal framework(XNI) is obviously essential for the implementation I had to dig into various documentation, API information ,samples , regarding Xerces Design,architecture and especially XML schema processing. I did download the source code of Xerces2-j from trunk and build the code inorder to try and test out some samples to get a hang on the flow of things related to schema loading and processing.Running through several samples (xs.QuerryXS ,xni.GrammerBuilder, jaxp.SourceValidator, xni samples,etc) and debugging them , really gave me a good inisght into to Xerces framework. I also went through XML schema processing classes available in org.apache.xerces.impl.xs package to get a thorough understanding on exisiting schema processing framework and especially on how <redefine> semantics are applied to schema documents which is in some ways similar to <override> semantics. + . Since this project is about implementing a XMLSchema 1.1 specification construct , I had to go through this specification docs several times to understand the exact structure and semantics of the component I’m going to implement which I think is of vital importance when it comes to the design and implementation. Previous discussions (that has happened in Xerces-j-dev mail archives) about this xs:override support , online articles and tutorials also helped a lot in this cause. I also interacted with Xerces mailing list (especially with my mentor) to clarify critical points and implementation details. Since knowing Xerces and it’s internal framework(XNI) is obviously essential for the implementation I had to dig into various documentation, API information ,samples , regarding Xerces Design,architecture and especially XML schema processing. I did download the source code of Xerces2-j from trunk and build the code inorder to try and test out some samples to get a hang on the flow of things related to schema loading and processing.Running through several samples (xs.QuerryXS ,xni.GrammerBuilder, jaxp.SourceValidator, xni samples,etc) and debugging them , really gave me a good inisght into to Xerces framework. I also went through XML schema processing classes available in org.apache.xerces.impl.xs package to get a thorough understanding on exisiting schema processing framework and especially on how <redefine> semantics are applied to schema documents which is in some ways similar to <override> semantics.''''' ''''' == Development Schedule == . I would initially focus on trying to come up with a good strategy to implement the proposed extension. For this i would need to digg into the existing framework on ways to integrate it correctly without breaking the existing code .I am planning to interact and discuss with the the xerces community (and with my mentor) on their suggestions and on any issues/bugs i may encounter along the way. After a good implementation strategy is in place i would start coding on it in several phases , taking into consideration different components of the proposed extension and their integration.Finally i will prepare the required test cases to validate the implemented extension and also the necessary design documentation,API java docs ,etc. I am willing to dedicate atleast 20-30 hours per week for the implementation of xs:overriding during the assigned four month GSoc period . If i get this project accepted , i am pretty much confident that during this time period i would successfully be able to complete the proposed implemenation with aforementioned milestones being achieved . @@ -117, +117 @@ ---- + ''''' ''''' + == Deliverables == * Source/patch related to xs:override implementation * Solid set of test cases to verify related aspects of xs:override schema composition @@ -131, +133 @@ . . 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. . == REFERENCES == - [1] http://www.w3.org/TR/xmlschema-1/#key-fullyConforming + '''''[1] http://www.w3.org/TR/xmlschema-1/#key-fullyConforming ''''' - [2] http://www.w3.org/TR/2006/REC-xml11-20060816/ + '''''[2] http://www.w3.org/TR/2006/REC-xml11-20060816/ ''''' - [3] http://www.w3.org/TR/xmlschema11-1/#override-schema + '''''[3] http://www.w3.org/TR/xmlschema11-1/#override-schema ''''' - [4] http://www.w3.org/TR/xmlschema11-1/#modify-schema + '''''[4] http://www.w3.org/TR/xmlschema11-1/#modify-schema ''''' - [5] http://www.w3.org/TR/xmlschema11-1/#override-xslt + '''''[5] http://www.w3.org/TR/xmlschema11-1/#override-xslt ''''' - [6] http://www.w3.org/TR/xmlschema11-1/#chameleon-xslt + '''''[6] http://www.w3.org/TR/xmlschema11-1/#chameleon-xslt ''''' - [7] https://wso2.org/repos/wso2/trunk/carbon/components/policy-builder + '''''[7] https://wso2.org/repos/wso2/trunk/carbon/components/policy-builder ''''' - [8] https://wso2.org/repos/wso2/trunk/carbon/components/jruby/ + '''''[8] https://wso2.org/repos/wso2/trunk/carbon/components/jruby/ ''''' - [9] http://www.brics.dk/DSD/dsd2.html + '''''[9] http://www.brics.dk/DSD/dsd2.html ''''' - [10] http://sourceforge.net/projects/bissa/ + '''''[10] [[http://sourceforge.net/projects/bissa/]] ''''' --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
